当前位置: 技术问答>linux和unix
C读串口问题,HELP!!
来源: 互联网 发布时间:2016-10-31
本文导语: 一个设备发过来的数据格式为: M 25 2345 1.23 1.45 00.0 000 000 1.545 串口参数:4800 8N1 结果我自己的程序读的数据是乱码:( 串口属性方面的一些设置: tio.c_oflag = 0; tio.c_iflag = 0; tio.c_cflag = B4800|CS8|CREAD|CLOCAL; ti...
一个设备发过来的数据格式为:
M 25 2345 1.23 1.45 00.0 000 000 1.545
串口参数:4800 8N1
结果我自己的程序读的数据是乱码:(
串口属性方面的一些设置:
tio.c_oflag = 0;
tio.c_iflag = 0;
tio.c_cflag = B4800|CS8|CREAD|CLOCAL;
tio.c_lflag = 0;
……
省略的代码设置了奇偶校验 停止位 数据位。
请各位弟兄帮忙一下…… 谢谢了!! 我已经搞了两天了,用超级终端读取的数据是正常的。还是我的代码有问题啊。
M 25 2345 1.23 1.45 00.0 000 000 1.545
串口参数:4800 8N1
结果我自己的程序读的数据是乱码:(
串口属性方面的一些设置:
tio.c_oflag = 0;
tio.c_iflag = 0;
tio.c_cflag = B4800|CS8|CREAD|CLOCAL;
tio.c_lflag = 0;
……
省略的代码设置了奇偶校验 停止位 数据位。
请各位弟兄帮忙一下…… 谢谢了!! 我已经搞了两天了,用超级终端读取的数据是正常的。还是我的代码有问题啊。
|
这个是基本的一个串口接收程序 你看下 我又试了下 没什么乱码 很久以前试的
#include
#include
#include
#include
#include
#include
#include
#include
#define max_buffer_size 100 /*定义缓冲区最大宽度*/
/*******************************************/
int fd; /*定义设备文件描述符*/
int flag_close;
int speed_arr[] = {B38400, B19200, B9600, B4800, B2400, B1200, B300,
B38400, B19200, B9600, B4800, B2400, B1200, B300};
int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300,
38400, 19200, 9600, 4800, 2400, 1200, 300, };
void set_speed(int fd, int speed)
{
int i;
int status;
struct termios Opt;
tcgetattr(fd, &Opt);
for ( i= 0; i
#include
#include
#include
#include
#include
#include
#include
#include
#define max_buffer_size 100 /*定义缓冲区最大宽度*/
/*******************************************/
int fd; /*定义设备文件描述符*/
int flag_close;
int speed_arr[] = {B38400, B19200, B9600, B4800, B2400, B1200, B300,
B38400, B19200, B9600, B4800, B2400, B1200, B300};
int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300,
38400, 19200, 9600, 4800, 2400, 1200, 300, };
void set_speed(int fd, int speed)
{
int i;
int status;
struct termios Opt;
tcgetattr(fd, &Opt);
for ( i= 0; i