自己在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转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...
随机推荐
- 分享个Cognos8.4安装介质的百度云网盘链接
https://pan.baidu.com/share/link?shareid=3750687613&uk=3441846946#list/path=%2F
- python爬虫Jenkins编译失败的日志
背景:在Jenkins编译失败后,需要拿到Jenkins的编译失败的日志,存储在数据库中,在把数据取出来,在另外一个页面进行展示,我的思路为: 1.观看Jenkins编译失败后的控制台显示的内容 2. ...
- BZOJ 1192 鬼谷子的钱袋 找规律
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1192 题目大意: 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向 ...
- IntelliJ IDEA 与Eclipse Link with Editor等价功能设置
Link With Editor是Eclipse内置功能中十分小巧,但却异常实用的一个功能. 这个开关按钮 (Toggle Button) 出现在各式导航器视图 ( 例如 Resource Explo ...
- 3、RabbitMQ-work queues 工作队列
work queues 工作队列 1.模型图: 为什么会出现 work queues? 前提:使用 simple 队列的时候 我们应用程序在是使用消息系统的时候,一般生产者 P 生产消息是毫不费力的( ...
- 1、RabbitMQ入门
RabbitMQ 可以参考官网进行学习! 开发语言:Erlang – 面向并发的编程语言. AMQP:是消息队列的一个协议. mysql 是 java 写的吗?不是 那么 java 能不能访问?可以, ...
- PAT——1065. 单身狗
“单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行 ...
- Angular动态表单生成(一)
好久不写博客了,手都生了,趁着最近老大让我研究动态表单生成的时机,撸一发博客~~ 开源项目比较 老大丢给我了两个比较不错的开源的动态表单生成工具,这两个项目在github上的star数量基本持平: h ...
- 字符型设备驱动程序-first-printf以及点亮LED灯(四)
怎么样 把 写的 代码 和 编译 放到 开发板上 去执行? 2017年5月22日16:34:13 需要 自己 编译 Linux 内核.. 需要 以下 几个 条件: 1.正常运行 Linux 的 开发 ...
- Java中InputStream和String之间的转化
https://blog.csdn.net/lmy86263/article/details/60479350 在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转 ...