读串口反应

N

Nathanb4u

Guest
大家好,

我的这个GPRS的。而我使用Wavecom公司的调制解调器,我需要建立一个与服务器GPRS连接,我试着用小型机的命令(在Linux)使用。它是发送数据。

现在
, 同样的事情
, 我需要落实的C代码。

写了“在\ r”开始到串行端口
, 就像写(峡湾,“在\ r”开始,3);

我要读行/错误响应缓冲区,并比较参考。

在这里
, 我无法捕捉美好响应缓冲区变量。

因为延误的时间读取串行端口。

请检查相同。

#包括<stdio.h>
#包括<string.h>
#包括<unistd.h>
#包括<stdlib.h>
#包括<termios.h>
#包括<fcntl.h>
#包括<sys/time.h>
#包括<signal.h>

#定义BAUD_RATE 115200

廉政的main()


廉政峡湾;
长波特;
结构的termios选择;

/开放的端口* * /
峡湾=打开(“/ dev/ttyS0来”,O_RDWR | O_NOCTTY | O_NDELAY);
的fcntl(峡湾,F_SETFL,0);

如果(峡湾“0)

printf(“\ ñ无法打开串口”);
返回0;

其他的
(printf(“\开放串行端口N成功\ ñ”);)

/ *获取当前选项* /
tcgetattr(峡湾,及期权);

开关(BAUD_RATE)

案件2400:
波特率= B2400;
中断;
案件9600:
波特率= B9600;
中断;
案件19200:
波特率= B19200;
中断;
案件38400:
波特率= B38400;
中断;
案件115200:
波特率= B115200;
中断;
默认值:
中断;
)/ /结束开关

/ *设置原始输入,1秒超时* /
options.c_cflag | =(CLOCAL |克里德);
options.c_lflag&=〜(ICANON |人道| ECHOE | ISIG);
options.c_oflag&=〜OPOST;
options.c_cc [血流速度] = 1;
options.c_cc [VTIME] = 1;

tcflush(峡湾,TCIFLUSH)/ *刷新缓冲区* /

/ *设置选项* /
tcsetattr(峡湾,TCSANOW,&选项);

/ *初始化调制解调器* /

init_modem(湾);
返回0;

)/ /结束的主内部/ *澳- 0 =调制解调器确定,-1 =调制解调器坏* /
init_modem(廉政湾)/ *我-串行端口文件* /


字符缓冲区[255]; / *输入缓冲区* /
字符* bufptr / *在当前字符缓冲区* /
廉政nbytes = 0; / *读取的字节数* /
廉政尝试; / *数量尝试迄今为止* /
整合酶;

/ *发送AT命令之后
, 一个CR * /
写(峡湾,“在\ r”开始,3); / / writinig到串行端口
睡眠(1); / /延迟得到响应串行端口是它秒
/ *读入字符的字符串缓冲区
, 直到我们得到了一个CR或倪* /

memset(缓冲区,'\ 0',sizeof(缓冲区));
= 0;
而(nbytes“= 0)


nbytes =读(峡湾,缓冲区,sizeof(缓冲区));
printf(“缓冲:%š \ N”的,缓冲区); / /在这里
, 我期待着在缓冲区OK响应变量
如果(strncmp(缓冲区,“行”,2)== 0)
nbytes = 1;
其他的
nbytes = -1;


如果(strncmp(缓冲区,“行”,2)== 0)
返回(0);

返回-1;


谢谢
弥敦道

 

Welcome to EDABoard.com

Sponsor

Back
Top