linux串口并行读取,请教linux串口问题!read读取时buf里只读取到8的倍数?
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
//??3ìDòê?ò????£·?2é?ˉμ?μ?3ìDò£???ìy?ˉé¢?÷·¢à?μ?μ??·??á?£?è?1?ê?×??oμ?μ??·£??ò·¢?íêy?Y£?·??òo?????á??£
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BAUDRATE B115200
//#define MyAddr 1
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /*POSIX compliant source POSIX?μí3??èY*/
#define FALSE 0
#define TRUE 1;
volatile int SENT=FALSE;
int fd;
void openserial()
{
struct termios oldtio;
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
tcgetattr(fd,&oldtio);
oldtio.c_cflag|=(CLOCAL|CREAD);
oldtio.c_iflag = IGNPAR ;????? /*o???????D£?ìDòáD*/
oldtio.c_oflag=0;
oldtio.c_cc[VTIME]??? = 0;???? /* inter-character timer unused */
oldtio.c_cc[VMIN]???? = 5;???? /* blocking read until 5 character arrives */
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B115200); /*2?ì??êéè???a9600bps*/
cfsetospeed(&oldtio,B115200);
tcsetattr(fd,TCSANOW,&oldtio);
}
void rd()
{
int n;//qaddr,Myaddr;
char buf[50];
n=read(fd,buf,sizeof(buf));//reading sent token
printf(":%s:%d\n",buf,n);
//qaddr=ord(buf[0]);
//Myaddr=ord("1");
if (buf[0]=='I')
{SENT=TRUE;}
}
void wt()
{
int ret1, n;
char buf[10],buf1[]="this is return from clinet";//eading buff
ret1=write(fd,buf1,sizeof(buf1));
printf(":%s:%d\n",buf1,ret1);
}
main()
{
openserial();
rd();
sleep(2);
if (SENT)
{
wt();
}
else
{
write(fd,"wrong addr",10);
printf("it is not my addr:17\n");
}
close(fd);
}
總結(jié)
以上是生活随笔為你收集整理的linux串口并行读取,请教linux串口问题!read读取时buf里只读取到8的倍数?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux connect自动重连,Li
- 下一篇: linux qt串口无法显示,Linux