silverlight 进行本地串口调用的一种可行的解决方法 之silverlight端代码
接上边的文章。
在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端代码的更多相关文章
- silverlight 进行本地串口调用的一种可行的解决方法
silverlight 是一个很不错的开发平台,我们可以设计出很绚丽的界面,用户可以拥有很好的体验,但是就目前来说,进行本地串口的直接调用时不行的,因为安全的原因,有没有相对简单的调用方式呢? 答案是 ...
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
<对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...
- 调用MediaScannerConnection 发生内存泄露的解决方法
调用MediaScannerConnection发起扫描时经常会发生内存泄露,例如: E ActivityThread: Activity FolderListActivity has leaked ...
- Ubuntu几种常见乱码解决方法
一.网页中的flash乱码: ubuntu默认浏览器是Firefox,但是Ubuntu默认不安装像flash这种带版权的软件,所以当你浏览像youku或网页播放器时,这种带有 flash ...
- EasyPlayer RTSP播放器OCX RegSvr32注册报错,DllRegisterServer调用失败,错误代码为0x80040200 解决方法
问题描述 模块"EasyPlayer-RTSPWebActiveX.ocx" 已加载,但对DLLRegisterServer调用失败,错误代码为0x80040200. 解决方法 是 ...
- Dedecms本地上传缩略图无法自动添加水印的解决方法
客户遇到一个问题,DEDECMS(V5.7)后台添加文档时,本地上传缩略图无法自动添加水印(系统设置里的图片水印设置没有问题),找了半天,终于找到了解决方法,留个记号: 打开dede/archives ...
- 用链表和数组实现HASH表,几种碰撞冲突解决方法
Hash算法中要解决一个碰撞冲突的办法,后文中描述了几种解决方法.下面代码中用的是链式地址法,就是用链表和数组实现HASH表. he/*hash table max size*/ #define HA ...
- (转)maven怎么 引入(或引用/使用) 自定义(或本地/第三方) jar的三种方式 图文教程 方法二最简单
转:https://blog.csdn.net/wabiaozia/article/details/52798194 准备工作: 假如我有一个自定义jar是:123456.jar,下载地址http:/ ...
- 调用Excel.Application报错的解决方法
之前由于装了WPS后,VBA和python调用某些OFFICE的端口一直报错.网上找了无数的解决办法.也没有解决. 将注册表清理.不行. 将WPS卸载.不行. 将office重装.不行. 之后找到了个 ...
随机推荐
- 常用Java字符API
- hdu 1175 bfs+priority_queue
连连看 如上图所示如果采用传统bfs的话,如果按照逆时针方向从(1,1)-->(3,4)搜索,会优先选择走拐四次弯的路径导致ans错误: Time Limit: 20000/10000 MS ( ...
- k8s集群搭建指南
一.简介 Ansible Docker Docker compose,docker swarm,docker machine Mesos,marathon Kubernetes(占据80%的市场) D ...
- mysql创建索引-----高性能(五)
转载地址:https://www.cnblogs.com/llzhang123/p/7889382.html 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或 ...
- JVM笔记(二) 垃圾收集器(1)
垃圾收集器 主要通过阅读<深入了解Java虚拟机>(周志明 著)和网络资源汇集而成,为本人学习JVM的笔记.同时,本文理论基于JDK 1.7版本,暂不考虑 1.8和1.9 的新特性,但可能 ...
- c++ 发送消息,模拟拖拽文件
#include <ShlObj.h> BOOL SimulateDropFile(CString strFilePath) { }; wcstombs(szFile, strFilePa ...
- HTML绘制三角形的方法:
<!DOCTYPE html> <html> <body> <style> #triangle-up { width: 0px; height: 0px ...
- POJ 2896 另解暴力
就是简单的用strstr函数对字符串进行处理. 另解:暴力(就是用strstr函数对字符串进行处理)另解:暴力(普通的字符串处理 .关键是strstr函数): #include<stdio.h& ...
- vue项目启动
这篇文章主要用于有源码vue项目安装: 1.安装node.js环境(npm包管理器)前面博客有写到如何安装: 2.vue-cli 脚手架构建工具前面博客有写到如何安装: 3.cnpm npm的淘宝镜 ...
- 1011 A+B 和 C
给定区间 [-2^31, 2^31] 内的 3 个整数 A.B 和 C,请判断 A+B 是否大于 C. 输入格式: 输入第 1 行给出正整数 T (≤10),是测试用例的个数.随后给出 T 组测试用 ...