当前位置: 技术问答>linux和unix
串口程序无法读串口文件,请问问题在哪里?谢谢了
来源: 互联网 发布时间:2016-08-06
本文导语: 我写了个最简单的串口程序,功能是先往ttys0写入6个字符,然后每次读取3个读出来,现在问题是写入成功,但是进入读取的时候就不执行了,请问问题在哪里? 源代码如下: 运行结果是运行到number one is a这句话...
我写了个最简单的串口程序,功能是先往ttys0写入6个字符,然后每次读取3个读出来,现在问题是写入成功,但是进入读取的时候就不执行了,请问问题在哪里?
源代码如下:
运行结果是运行到number one is a这句话后就停在那里不动了,说明nread = read(fd,buff,3);这句话有问题。
补充一下:写入函数的返回值是6,表示写入成功,
#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix标准函数定义*/
#include /**/
#include /**/
#include /*文件控制定义*/
#include /*PPSIX终端控制定义*/
#include /*错误号定义*/
/***@brief 设置串口通信速率
*@param fd 类型 int 打开串口的文件句柄
*@param speed 类型 int 串口速度
*@return void*/
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 0)
set_speed(fd,115200);
else
{
printf("Can't Open Serial Port!n");
exit(0);
}
if (set_Parity(fd,8,1,'N')== 0)
{
printf("Set Parity Errorn");
exit(1);
}
printf("tty0 have open,now beginn");
i=0;
printf("2222222222222n");
while(i
源代码如下:
运行结果是运行到number one is a这句话后就停在那里不动了,说明nread = read(fd,buff,3);这句话有问题。
补充一下:写入函数的返回值是6,表示写入成功,
#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix标准函数定义*/
#include /**/
#include /**/
#include /*文件控制定义*/
#include /*PPSIX终端控制定义*/
#include /*错误号定义*/
/***@brief 设置串口通信速率
*@param fd 类型 int 打开串口的文件句柄
*@param speed 类型 int 串口速度
*@return void*/
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 0)
set_speed(fd,115200);
else
{
printf("Can't Open Serial Port!n");
exit(0);
}
if (set_Parity(fd,8,1,'N')== 0)
{
printf("Set Parity Errorn");
exit(1);
}
printf("tty0 have open,now beginn");
i=0;
printf("2222222222222n");
while(i