串口接收数据错误0D变0A问题

在调试Linux设备与PC串口通信时,发现数据中的0D在下位机接收时变为0A,导致CRC校验失败。通过检查串口设置,发现需设置`options.c_iflag &= ~ICRNL;`来防止0D被转换为0A。以下是完整的串口配置代码,供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在调试串口软件过程中遇到一个烦人的问题,就是上位机(PC)与下位机(Linux设备)串口交互时,PC串口发送的数据中有0D的,下位机接收时都变成0A,这就造成了串口数据的CRC检验失败,后来发现是串口的设置有误才导致这个问题的出现,下面附上设置需要添加的内容。

//预防0D强制变0A
options.c_iflag &= ~ICRNL;

以下为我串口的设置代码,希望能给自己警示的同时给大家带来帮助:

static int32 dev_serial_port_set_parity(int32 databits,int32 stopbits,int32 parity)

printf("set_Parity begin\n");
struct termios options; 

if  ( tcgetattr( serial_port_fd,&options)  !=  0) 

perror("SetupSerial 1");     
return(FALSE);  
}

options.c_cflag &= ~CSIZE; 
switch (databits) /*设置数据位数*/
{   
case 7:         
options.c_cflag |= CS7; 
break;
case 8:     

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值