Avalonia跨平台入门第二十五篇之玩耍串口 |
您所在的位置:网站首页 › 安卓232串口 › Avalonia跨平台入门第二十五篇之玩耍串口 |
上一篇刚更新完玩耍TCP,下面就有朋友咨询能不能玩一下串口;既然有这需求,咱就花费点时间一下,毕竟一直都是喜欢新鲜的东西,那就折腾白;笔记本没有串口,咱就虚拟二个串口: 2、虚拟机下Ubuntu配置串口: 3、环境完事,获取本地所有的串口: private void GetAllSerialPorts() { string[] portNames = SerialPort.GetPortNames(); if(portNames.Length == 0) { AllLogs.Add("没有找到串口"); } else { AllLogs.Add("获取所有的串口成功"); foreach(string portName in portNames) { Ports.Add(portName); } } }4、根据串口的名称去打开串口: private void OpenPort(string portName) { serialPort = new SerialPort(portName, 9600); serialPort.Encoding = Encoding.UTF8; // 注册数据接收事件 serialPort.DataReceived += SerialPortDataReceived; if(!serialPort.IsOpen) { try { serialPort.Open(); AllLogs.Add("串口打开成功"); } catch(Exception ex) { AllLogs.Add($ "串口打开失败{ex.Message}"); } } }5、接收数据的处理: if(e.EventType == SerialData.Chars) { // 接收到字符数据 byte[] receivedBytes = new byte[serialPort.BytesToRead]; serialPort.Read(receivedBytes, 0, receivedBytes.Length); string receivedData = Encoding.UTF8.GetString(receivedBytes); // 处理接收到的字符数据 MessageModel model = new MessageModel() { MessageType = MessageTypeEnum.Receive, Message = receivedData }; AllMessage.Add(model); }6、发送数据: public void SendData(string data) { if(serialPort.IsOpen) { byte[] encodedBytes = Encoding.UTF8.GetBytes(data); serialPort.Write(encodedBytes, 0, encodedBytes.Length); SendMessage = null; MessageModel model = new MessageModel() { MessageType = MessageTypeEnum.Send, Message = data }; AllMessage.Add(model); } }7、最终验证成功后的效果: 最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |