自己在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 = 115200;// sendvar sendDatas = new byte[] { 0x83, 0xC1, 0x00, 0x00, 0x42 };var wBuffer = CryptographicBuffer.CreateFromByteArray(sendDatas);var sw = await client.OutputStream.WriteAsync(wBuffer);// readvar rBuffer = await client.InputStream.ReadAsync(new Windows.Storage.Streams.Buffer(11), 11, InputStreamOptions.None);string rString = CryptographicBuffer.EncodeToHexString(rBuffer);Debug.WriteLine("received:" + rString);}catch (Exception ex){Debug.Fail(ex.Message, ex.ToString());}}}上面的連接串口收發功能,是最簡單的。
轉載于:https://www.cnblogs.com/3Tai/p/10059758.html
總結
以上是生活随笔為你收集整理的自己在UWP程序上调用usb转串口的路程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins命令可视化
- 下一篇: Lighting System Desi