写了一个串口通讯的东西, 在一台机器上测试(短接2,3针), 读程序运行于后台, 数据可以接受到, 可读程序却退出不了,
停在循环内部, 高手帮忙看一下, 谢谢
串口读:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <string.h>
#define BAUDRATE B9600
#define SERIALREADDEVICE "/dev/ttyS0"
#define SERIALWRITEDEVICE "/dev/ttyS0"
#define BUFFERSIZE 255
char *SerialRead()
{
char cBuf[8], *pReceBuf;
char cAllBuf[BUFFERSIZE];
int iCount = 0;
struct termios tmIO;
int ttyCOM;
ttyCOM = open(SERIALREADDEVICE, O_RDWR|O_NOCTTY);
if (ttyCOM < 0)
{
fprintf(stderr, "%s Port Open Error!\n", SERIALREADDEVICE);
exit(-1);
}
tcgetattr(ttyCOM, &tmIO);
cfmakeraw(&tmIO);
cfsetispeed(&tmIO, BAUDRATE);
cfsetospeed(&tmIO, BAUDRATE);
tmIO.c_cflag &= ~CSIZE;
tmIO.c_cflag |= CS8;
tmIO.c_cflag &= ~PARENB;
tmIO.c_iflag &= ~INPCK;
tmIO.c_cflag &= ~CSTOPB;
tmIO.c_lflag = 0;
tmIO.c_cc[VTIME] = 5

0;
tmIO.c_cc[VMIN] = 0;
tcsetattr(ttyCOM, TCSANOW, &tmIO);
pReceBuf = cBuf;
iCount = read(ttyCOM, pReceBuf, 255);
if (iCount == -1)
{
fprintf(stderr, "Receive Error!\n");
exit(-1);
}
//循环开始
while (iCount > 0)
{
printf("buffer: %s\n", pReceBuf);
strcat(cAllBuf, pReceBuf);
memset(cBuf, 0, sizeof(cBuf));
printf("cAllBuf: %s\n", cAllBuf);
iCount = read(ttyCOM, pReceBuf, 255); //当写程序串口数据写完时, 读程序就停在这里了
if (iCount == -1)
{
fprintf(stderr, "Receive Error!\n");
exit(-1);
}
printf("iCount: %d\n", iCount);
}
printf("All: %s\n", cAllBuf);
close(ttyCOM);
return pReceBuf;
}