串口问题

串口问题,第1张

先把字节和比特的关系弄清楚吧。还有你把串口通信协议与串口通信参数搞混淆了。
AA 05 01 03 B3是串口通信协议,这么说吧,通信协议就是汉语的语法,应该用什么样的语法来表示你所要叙述的内容。而串口通信参数则是就是汉字用的是宋体字还是楷体字,是GB编码还是ASCII编码之类的。
你所说的数据位,奇校验偶校验什么的,主要是串口参数,一般都是底层做相关处理,你只要将同在一个通信线路上的串口设备的串口参数设置为一致就OK了,不用管其他的,到底是怎么回事你基本上不用管的。
而如果你要编写上位机软件,你需要知道的是通信协议,也就是帧头+长度+ID+DATA+校验和这些东东的,而这些都是做上位机软件需要了解的,一般串口最著名的的协议是Modbus RTU协议。
下面的链接有讲到Modbus RTU协议,你可以参考一下:
>

配置串口需要包含头文件

其中最核心的配置结构体为:

如何获取该结构呢?我们 *** 作串口跟 *** 作文件一样,也是调用 open() 函数来打开串口,

这样我们就能够得到一个文件描述符 fd ,然后就可以调用 tcgetattr() 函数来获取上述配置结构体了。

Linux 串口默认的配置为:波特率 9600,数据位 8 位,无奇偶校验,停止位 1 位,无 CTS/RTS 。

以下介绍一些常用的配置项:波特率、奇偶校验、数据位、停止位、硬件控制流。

相关接口

Linux 将串口的波特率分为了输入波特率和输出波特率,不过最常用的场景是将两者设置成一样。

cfgetispeed() 函数获取输入波特率, cfgetospeed() 函数获取输出波特率。 cfsetispeed() 函数设置输入波特率, cfsetospeed() 函数用于设置输出波特率,当然 cfsetspeed() 函数扩展为同时设置输入和输出波特率。

上述接口中的 speed_t 是一系列波特率的标志位,例如常用的 115200 波特率就为 B115200,参考下述选项:

设置奇偶校验位可以通过修改 termios 结构体中的 c_cflag 成员来实现,若无校验,则将 PARENB 位设为 0;若有校验,则 PARENB 为 1。之后再根据 PARODD 来区分奇偶校验, PARODD 为 1 表示奇校验, PARODD 为 0 表示偶校验。例如设置无奇偶校验位:

设置数据位可以通过修改 termios 结构体中的 c_cflag 成员来实现,CS5、CS6、CS7 和 CS8 分别代表数据位 5、6、7 和 8。不过在设置数据位之前,需要先用 CSIZE 来做屏蔽字段,清楚这几个标志位,例如设置数据位为 8 位:

设置停止位可以通过修改 termios 结构体中的 c_cflag 成员来实现, CSTOPB 位为 1 表示 2 位停止位, CSTOPB 位为 0 标志 1 位停止位。例如设置停止位为 1 位:

设置硬件控制流可以通过修改 termios 结构体中的 c_cflag 成员来实现, CRTSCTS 为 1 表示使用硬件控制流,为 0 表示不使用硬件控制流。例如使能硬件控制流:

当然,最后还需要用 tcflush() 抛弃存储在 fd 里的未接收的数据。

再利用接口 tcsetattr() 函数将配置信息写入文件描述符 fd :

这样整个串口最常用的用法就配置完成了。

具体的配置使用可以参考我的项目 HCI-Middleware 里的 hci_transport_uart_linuxc 文件。

参考:

错误不少!
给 串口对象 m_ctrlComm 设置 相关属性
m_ctrlCommSetCommPort(1); //设置COM号
m_ctrlCommSetCommMode(1); //设置通信模式
m_ctrlCommSetInBufferSize(1024); //设置 输入缓冲区大小
m_ctrlCommSetOutBuffer(512); //设置 输出缓冲区大小
m_ctrlCommSetSettings(\"9600,n,8,1\"); //设置波特率、校验位、数据位、停止位
m_ctrlCommGetInput(); //获取数据
m_ctrlCommSetPortOpen(true); //打开串口
祝你顺利

1、检查通信配置:确认驱动程序及相关设备(如网络适配器、USB接口等)的通信设置是否正确,例如波特率、数据位数、校验位、停止位等。
2、更新驱动程序和固件:下载和安装最新版的驱动程序和固件,以确保系统的兼容性和稳定性。
3、检查硬件连接:检查电缆连接是否紧固,设备接口是否干净,并尝试更换电缆或接口。
4、诊断软件问题:使用系统自带的故障排除工具或第三方诊断软件来检测和修复可能存在的软件问题。
5、联系技术支持:如果以上方法无法解决问题,建议联系设备厂商或相关技术支持部门寻求进一步的帮助和指导。

具体的调整方法如下:
1、检查接口设置:首先检查电脑与缝纫机的接口是否连接正确,以及电脑软件中的端口设置是否正确,确保连接的是正确的串口或USB接口,并检查设置的波特率、数据位、停止位和校验位等参数是否与缝纫机的接口设置一致。
2、检查控制器参数设置:如果接口设置正确无误,还需要检查缝纫机控制器的参数设置是否正确。通常可以通过按下控制器上的设置键或菜单键进入参数设置界面进行调整,具体的 *** 作方法可以参考设备说明书或咨询售后服务。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13255837.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存