- 论坛徽章:
- 0
|
10可用积分
#define SleepMs( ms ) ( usleep( (ms)*1000 ) )
//打开串口
int OpenDev(char *Dev)
{
int fd = open( Dev, O_RDWR | O_NOCTTY | O_NDELAY);
if (fd==-1)
{
perror("Can't Open Serial Port");
}
else
{
fcntl(fd, F_SETFL,FNDELAY);
}
return fd;
}
int main()
{
int comfd = OpenDev( "/dev/ttyS0" );
char srcBuf[] = "12345";
while( 1 )
{
int writeLen = write( comfd, srcBuf, sizeof(srcBuf) ); //S0发送
char tmpRecvBuf[16];
//接收
for( int i = 0; i < 100; ++i )
{
if ( read( comfd, tmpRecvBuf, sizeof(tmpRecvBuf) ) > 0 )
{
printf( "ok\n" );
break;
}
SleepMs( 1 );
}
SleepMs( 1000 );
}
return 0;
}
//以上是串口自发自收的测试程序,将串口2,3脚短接,但是没有打印"ok",即没有收到数据;而发送是成功的(writeLen的值大于0)。
请问这是什么原因?
P。S。因为是同一个串口,所以没有设置波特率等参数;另外串口用“串口调试助手”测试是正常的,能够自发自收数据。 |
|