接上边的文章。

在javascript暴露操作activex 串口接收之后,就是silverlight端进行串口数据的显示,我们的显示方式比较简单,只是为了演示,我们每隔1秒进行数据的获取并显示,

为了进行测试我们使用的是虚拟串口,虚拟串口的软件比较多,我使用的是VSPD虚拟串口的破解版(大家都爱这样用),这个软件的使用是比较简单的。我的虚拟串口如图

我测试的时候使用的是COM3 与COM4 这是成对出现的,主要是方便调试,一个发送,一个接受。

我了进行发送,我写了一个比较简单的发送端,使用C#的,思路很简单就是每隔一定的时间进行连续的发送数据,这些数据是有编号的(主要是方便查看)。

主要的代码如下:

public string comMame = "COM4"; //使用COM4
public SerialPort port; //定义串口类
public int index = 0; // 进行发送编号的。

private void write()
{
port = new SerialPort(comMame);
if (port.IsOpen == false)
{
try
{
port.Open();
index++;
port.Write("dalong" + index);
port.Close();
}
catch (Exception)
{

}
}
else
{
index++;
port.Write("dalong" + index);
}
}

上边的write方法是进行数据发送的,比较简单。间隔发送使用的是Timer组件。直接双击写代码即可。

silverlight的界面如下:

打开串口COM3的代码如下:

private void Button_Click_5(object sender, RoutedEventArgs e)
{
bool istrue= Start("COM3");
MessageBox.Show(istrue.ToString());
}

关闭串口COM3的代码如下:

private void Button_Click_6(object sender, RoutedEventArgs e)
{
bool istrue = Stop("COM3");
MessageBox.Show(istrue.ToString());
}

获取连续数据的代码如下:

string result = ""; // 接受的数据

DispatcherTimer time; //定时器

private void Button_Click_3(object sender, RoutedEventArgs e)        {

time = new DispatcherTimer();

time.Interval =new TimeSpan(0,0 ,1);

time.Tick += time_Tick;

time.Start();

}

void time_Tick(object sender, EventArgs e)
 {
    result ="接受到的数据是:"+ getData();
    textinfo.Dispatcher.BeginInvoke(new Action(() => textinfo.Text = result));
}

调试界面如下:(比较简单)

这个获取瞬间数据的方法。

连续数据的界面如下:

以上方案编码经测试是可行的,只是对于客户端需要安装.net Framework 实际在部署的时候可以使用.net 2.0 进行activex插件的开发,可以减少用户的下载,并且我们使用的过程中客户必须使用IE内核的浏览器,一般做串口数据就会碰到这样的限制。

silverlight 进行本地串口调用的一种可行的解决方法 之silverlight端代码的更多相关文章

  1. silverlight 进行本地串口调用的一种可行的解决方法

    silverlight 是一个很不错的开发平台,我们可以设计出很绚丽的界面,用户可以拥有很好的体验,但是就目前来说,进行本地串口的直接调用时不行的,因为安全的原因,有没有相对简单的调用方式呢? 答案是 ...

  2. 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法

    <对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...

  3. 调用MediaScannerConnection 发生内存泄露的解决方法

    调用MediaScannerConnection发起扫描时经常会发生内存泄露,例如: E ActivityThread: Activity FolderListActivity has leaked ...

  4. Ubuntu几种常见乱码解决方法

    一.网页中的flash乱码:        ubuntu默认浏览器是Firefox,但是Ubuntu默认不安装像flash这种带版权的软件,所以当你浏览像youku或网页播放器时,这种带有 flash ...

  5. EasyPlayer RTSP播放器OCX RegSvr32注册报错,DllRegisterServer调用失败,错误代码为0x80040200 解决方法

    问题描述 模块"EasyPlayer-RTSPWebActiveX.ocx" 已加载,但对DLLRegisterServer调用失败,错误代码为0x80040200. 解决方法 是 ...

  6. Dedecms本地上传缩略图无法自动添加水印的解决方法

    客户遇到一个问题,DEDECMS(V5.7)后台添加文档时,本地上传缩略图无法自动添加水印(系统设置里的图片水印设置没有问题),找了半天,终于找到了解决方法,留个记号: 打开dede/archives ...

  7. 用链表和数组实现HASH表,几种碰撞冲突解决方法

    Hash算法中要解决一个碰撞冲突的办法,后文中描述了几种解决方法.下面代码中用的是链式地址法,就是用链表和数组实现HASH表. he/*hash table max size*/ #define HA ...

  8. (转)maven怎么 引入(或引用/使用) 自定义(或本地/第三方) jar的三种方式 图文教程 方法二最简单

    转:https://blog.csdn.net/wabiaozia/article/details/52798194 准备工作: 假如我有一个自定义jar是:123456.jar,下载地址http:/ ...

  9. 调用Excel.Application报错的解决方法

    之前由于装了WPS后,VBA和python调用某些OFFICE的端口一直报错.网上找了无数的解决办法.也没有解决. 将注册表清理.不行. 将WPS卸载.不行. 将office重装.不行. 之后找到了个 ...

随机推荐

  1. PHP函数总结 (三)

    <?php/** * PHP变量的范围 * 1.局部变量(内部变量) * 在函数内部声明的变量,作用域仅限于函数内部,参数也是局部变量:执行完毕后函数内部的变量都被释放 * 若需要使用函数内的变 ...

  2. qxx项目大文件上传

    1. 在做大文件上传的时候,要注意修改文件的配置,php.ini的配置,还有连接时间.这些东西都记不清了,明天需要问一下芳哥,然后遇到问题的时候就能自己解决了. 2. 然后就遇到一个很尴尬的问题:大文 ...

  3. Java IO流中的flush()

    通过BufferedOutputStream或BufferedWriter 链接到底层流上来实现.因此,在写 完数据时,flush就显得尤为重要. 例如: 上图中WEB服务器通过输出流向客户端响应了一 ...

  4. Servlet 与 CGI 的比较

    和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象CGI程序一样,收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误).然而,Servlet的机制并不仅仅 ...

  5. 实现自己的ls命令

    一步步实现,先看最简单的ls的指令: ls不带参数,直接打印文件名 dst.txt main10.c main11.c main12.c main13.c main14.c~ main15.c~ ma ...

  6. SSO-CAS单点登录

    基本概念 单点登录SSO ,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS(Centeral Authenti ...

  7. Jquery中bind(), live(), on(), delegate()四种注册事件的优缺点,建议使用on()

    jquery中注册的事件,注册事件很容易理解偏差,叫法不一样.我第一反应就是如何添加事件,使用onclick之类的,暂时不讨论js注册事件的方法. 也看到园内前辈写过相关的帖子,但不是很详细,我找到了 ...

  8. 集合list里存储list,要遍历最底层list的对象元素的遍历方法

    package com.wtd; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; im ...

  9. INTEL NUC下一代计算机 怎么进bios,进不去bios

    手上有个 英特尔® NUC 套件 DE3815TYKHE 玩具一样,200大洋收来的,配置不高,配了个4G内存,加上以前的2.5笔记本硬盘. 放家里当个小服务器玩吧,挺省电的. BIOS 开启fast ...

  10. Thinkphp5 微信公众号token验证不成功的原因

    最近要启动微信项目,上个月就开始了解微信的开发,这个月要启动项目,配置微信公众号信息一直失败.为此,我甚至手工写了微信提交过来的记录,如: &timestamp=1510210523& ...