static int ttyWriteCmd(const char *ttyName, const char *cmd, int len)
{
int wLen = 0;
FILE *fp = fopen(ttyName, "r+");
if(NULL == fp) {
perror("Open tty device failure");
return -1;
}
for(int i = 0; i < len; i++)
{
putc(cmd[i], fp);
wLen++;
}
putc('\r', fp);
putc('\n', fp);
fclose(fp);
GLOG_DEBUG("Write AT command is \"%s\"", cmd);
return wLen;
}
static int ttyReadData(const char *ttyName, char *buf, int len)
{
int rLen = 0;
int fd = open(ttyName, O_RDONLY | O_NONBLOCK);
if(fd < 0) {
perror("Open tty device failure");
return -1;
}
int i = 0;
while(TRUE) {
char ch = 0;
if(read(fd, &ch, 1) != 1) {
for(int i = 0; i < 1024; i++)
read(fd, &ch, 1);
break;
}
if(i < len) {
buf[i++] = ch;
} else {
GLOG_DEBUG("Read tty char length greater than buf length!\n");
break;
}
rLen++;
}
close(fd);
return rLen;
}
static BOOL isATCmdResponseOK(const char *cmd, char *buf)
{
BOOL ret = FALSE;
char fbuf[256] = {0};
strncpy(fbuf, buf, strlen(buf));
char *fstr = strstr(fbuf, cmd);
if(fstr) {
if(strstr(fstr, "OK")) {
ret = TRUE;
} else if(strstr(fstr, "ERROR")) {
ret = FALSE;
} else {
/* T.B.D */
}
}
return ret;
}
C tty设备操作
最新推荐文章于 2024-04-11 16:51:36 发布