自己在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转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...
随机推荐
- 修复xcode6.2 插件不能使用问题
在终端输入以下命令即可: find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -m ...
- HTTP之Response状态码
Status-Code - 1xx: Informational - Request received, continuing process - 2xx: Success - The action ...
- Jenkins获取编译状态
背景:在通过python的API调用Jenkins,启动Jenkins的job任务时,是需要知道Jenkins的编译状态,获取编译状态为 status=server.get_build_info(jo ...
- selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)
1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应 ...
- 理解java的三大特性之多态
所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个 ...
- HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...
- php多进程编程实现与优化
PHP多进程API 创建子进程 @params void @returns int int pcntl_fork(void) 成功时,在父进程执行线程内返回产生的子进程PID,在子进程执行线程内返回0 ...
- font-failmly字体对应
- Apache2.4.34 + php 7.28 + MySQL8.0.12 安装及配置
服务端的学习 Apache2.4.34 的安装及配置 1.基本安装 最新的 Apache 已经不提供 Windows 的安装版本,所以我们这里使用的是解压版 -下载地址:https://www.apa ...
- iOS:手势与矩形、点运算相关(18-01-24更)
1.矩形.点运算 1.获取当前的View在Window的frame 2.包含判断 3.获取点击在响应者 touchesBegan 的位置 4.UIScrollView.UITableView 实时 位 ...