自己在UWP程序上调用usb转串口的路程
之前一直是在普通的framework环境下写串口,使用的类为 SerialPort 这个类大家可能比较熟悉。但是在UWP的开发里,使用的是 SerialDevice 这个类,是不一样的。
1. 清单文件配置
首先,你需要建立UWP项目(Universal Windows),之后配置 Package.appxmanifest 文件。我们就叫它清单文件吧,如果你直接双击打开是以界面的方式编辑的,我们想要编辑的是 Capabilities 节点,因为我们要启用设备访问权限。但是微软的配置此节点的相关文章也指出了,在这个操作界面里有一些节点并不会列出,需要手动修改清单文件。
为了手动修改清单文件的xml节点,我们右击这个清单文件,选择“Open With...”,也就是所谓的打开方式,之后选择使用“XML Editor”打开,便可以以XML代码的方式编辑了。
<Capabilities>
<Capability Name="internetClient" />
<DeviceCapability Name="serialcommunication">
<!--<Device Id="any">-->
<Device Id="vidpid:1A86 7523">
<Function Type="name:serialPort"/>
</Device>
</DeviceCapability>
</Capabilities>
清单文件XML根节点为Package,当然如果你之前启用了其他权限,比如我这里有一个internetClient权限启用过。
配置串口访问功能,除了Device行,其他的都是固定写法。本行可以指定想访问的设备,设备的vid和pid标识可以在设备管理器中定位到设备并查看属性得到,一般会根据驱动提供商的公司和产品系列不同而不同。至于不指定标识直接写any我并没有试过,但是在网站上翻阅资料时,见到好几个地方是这么写的,如果你不确定设备到底有没有固定型号,或者插了多个不同型号的设备之后手动选择,这里指定any应该就能达到不筛选的效果。
2. 访问串口并收发数据
public async Task StartAsync()
{
string filter = SerialDevice.GetDeviceSelector();
var devices = await DeviceInformation.FindAllAsync(filter); foreach (var jd in devices)
{
try
{
Debug.WriteLine("即将尝试握手串口:" + jd.Name);
var client = await SerialDevice.FromIdAsync(jd.Id);
client.BaudRate = ; // send
var sendDatas = new byte[] { 0x83, 0xC1, 0x00, 0x00, 0x42 };
var wBuffer = CryptographicBuffer.CreateFromByteArray(sendDatas);
var sw = await client.OutputStream.WriteAsync(wBuffer); // read
var rBuffer = await client.InputStream.ReadAsync(new Windows.Storage.Streams.Buffer(), , InputStreamOptions.None);
string rString = CryptographicBuffer.EncodeToHexString(rBuffer);
Debug.WriteLine("received:" + rString);
}
catch (Exception ex)
{
Debug.Fail(ex.Message, ex.ToString());
}
}
}
上面的连接串口收发功能,是最简单的。
自己在UWP程序上调用usb转串口的路程的更多相关文章
- 发布在IIS上的Web程序,调用服务器的COM组件
场景大致是这样的,在工厂中分布着许多的PDA点,这些PDA点都要进行实时的扫描--打印操作.实现方法是采用网络打印机,然后服务器安装驱动,管理着所有的打印机.然后服务器,发布一个WebService, ...
- Vmware+Virtualbox+Ubuntu+debian+USB转串口+kermit
当前的环境是:在Win7笔记本主机上安装VirtualBox+Ubuntu12_04,串口使用USB转串口 如果使用的虚拟机是VirtualBox: 如果使用的虚拟机是Vmware: 执行这步后,主机 ...
- 单片机usb转串口的时灵时不灵的解答
写这篇博客,首先检讨一下自己,因为以前串口的程序,也和步进电机一样,时灵时不灵,我现在终于知道这是为什么了,因为51上有三个串口,一个公口,一个母口,一个usb转串口,这样的话,串口有3个了,我手头上 ...
- android设备中USB转串口demo 下载
http://files.cnblogs.com/guobaPlayer/testUSB2Serial.apk USB转串口demo程序, 无需驱动,只要手机USB是OTG类型,插上我们的模块即可使用 ...
- Linux 串口、usb转串口驱动分析(2-2) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186852 Linux 串口.usb转 ...
- linux下的usb转串口的使用(修改)【转】
环境:Ubuntu 10.10 Server minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将 ...
- (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...
- Mac OS X Yosemite & Arduino安装CH340 USB转串口驱动
新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调 ...
- linux驱动基础系列--Linux 串口、usb转串口驱动分析
前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...
随机推荐
- Vmstat主要关注哪些数据?
除特殊情况外,一般关注飘红部分 任务的信息(procs) r(running) 在internal时间段里,运行队列中的进程数,即表示正在运行或者正在等待CPU时间的进程数,如果这个参数值超过服务器上 ...
- 【转】iphone 输入/输出流异步读写数据
原文:iphone 输入/输出流异步读写数据 分类: iphone2012-05-30 14:50 2484人阅读 评论(1) 收藏 举报 iphoneattributesinterfacepaths ...
- js实现点击按钮显示某个区域 然后点击页面中任意其他位置,隐藏该区域
$(".licat-header-list").on("click",function(e){ $(this).addClass("active&qu ...
- SSM框架优缺点和spring boot 比起优缺点是什么?
一.SSM优缺点应该分开来说的,比如 1)spring 不说了,核心ioc.aop技术,ioc解耦,使得代码复用,可维护性大幅度提升,aop提供切面编程,同样的增强了生产力. 2)spring mvc ...
- 在Windos上安装Nginx
官网地址:http://nginx.org/en/download.html 1.下载 2.解压 3.启动 4.访问 打开cmd cd到nginx路径,使用命令关闭它 nginx.exe -s sto ...
- pyhton 自动化pymysql操作mysqldb数据库增删改查封装
# coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...
- Linux中使用iptables开放特定端口
禁止其他主机对该特定主机进行访问和远程连接控制,所以只开放特定端口 只控制INPUT链就可达到控制其他主机对该主机的访问. 1.首先关闭INPUT链 iptables -P INPUT DROP 使用 ...
- Gradle Goodness: Renaming Files while Copying
With the Gradle copy task we can define renaming rules for the files that are copied. We use the ren ...
- iOS之禁止所有输入法的表情
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSSt ...
- angular2jsonp如何跨域请求百度API进行定位
前提,百度api的申请,不会的可以百度一下,下面是连接 http://lbsyun.baidu.com/index.php?title=webapi/ip-api 1.appMoudle里引入 imp ...