关于串口通信中数据传输的问题
数据在串口通信的过程中是以字节为基本单位——也就是说发送的每一个数必需在0-255之间(现只考虑无符号的情况)。如果想发送256那就必须要分成两个数发(255+1)。
一般在串口通信中会遇到不同的收发格式,诸如ASCII,Hex之类的,只有确保收发两方的收发格式相同。
例:如果发的一方发送了50,收的一方如果用不同的接收格式接收,就会出现完全不同的数(以ASCII的格式接收,那么就会收到53+48)(以10进制的格式接收,那么就会收到的50)(以16进制的格式接收,那么就会收到32)
Ps.由上可知,以ASCII码格式收发,效率要明显慢很多
在用C#编写上位机的时候:
byte[] sendBuf = new byte[2] { 21,0X21};
上面的21在发送的时候会默认为是十进制,0X21会默认为是十六进制(在发送的时候也会有一次数据转换)
当用十六进制的格式接收会收到15,21;用十进制的格式接收会收到21,33
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统