#include "../include/CommUart.h"#include"ComCommon.h"#include#include#include#include#include#include#include#include
using namespacestd;#define USR_DEBUG
static structtermios ori_attr, cur_attr;static __inline int tty_reset(void)
{if (tcsetattr(STDIN_FILENO, TCSANOW, &ori_attr) != 0)return -1;return 0;
}static __inline int tty_set(void)
{if ( tcgetattr(STDIN_FILENO, &ori_attr) )return -1;
memcpy(&cur_attr, &ori_attr, sizeof(cur_attr) );
cur_attr.c_lflag&= ~ICANON;//cur_attr.c_lflag |= ECHO;
cur_attr.c_lflag &= ~ECHO;
cur_attr.c_cc[VMIN]= 1;
cur_attr.c_cc[VTIME]= 0;if (tcsetattr(STDIN_FILENO, TCSANOW, &cur_attr) != 0)return -1;return 0;
}static __inline int kbhit(void)
{
fd_set rfds;structtimeval tv;intretval;/*Watch stdin (fd 0) to see when it has input.*/FD_ZERO(&rfds);
FD_SET(0, &rfds);/*Wait up to five seconds.*/tv.tv_sec= 0;
tv.tv_usec= 0;
retval= select(1, &rfds, NULL, NULL, &tv);/*Don‘t rely on the value of tv now!*/
if (retval == -1) {
perror("select()");return 0;
}else if(retval)return 1;/*FD_ISSET(0, &rfds) will be true.*/
else
return 0;return 0;
}int main(int argc, char*argv[]) {//非阻塞getChar初始化
inttty_set_flag;
tty_set_flag=tty_set();char com_num[3] = {0};if (argc < 2) {
printf("please enter com num:\n");
scanf("%c", &com_num);
}else{//com_num = *argv[1];
strcpy(com_num, argv[1]);
}
#ifdef USR_DEBUG
printf("main entry\n");#endif //USR_DEBUGCComCommon*m_pComUart = newCCommUart;
#ifdef USR_DEBUG
printf("create CCommUart\n");#endif //USR_DEBUG
char sendStr[256] = {0};
strcpy(sendStr,"/dev/ttyS100");
strcat(sendStr, com_num);
strcat(sendStr,",115200,8,1,n");//m_pComUart->InitComComm("/dev/ttyS1001,115200,8,1,n");
m_pComUart->InitComComm(sendStr);//strcat(sendStr,"kkkkkkkkkkkkkkkkkk");//写入文件
FILE*pFile;char fileName[124] = {0};
sprintf(fileName,"readData_dir/%s.txt",com_num);
pFile= fopen (fileName, "w");char Rbuff[256] = {0};int nsize = 0;int i = 0;int nCnt = 0;while (1) {/*********************发送测试*******************************/
//m_pComUart->SendBuff(buff,sizeof(buff));//m_pComUart->SendStr("1234567887654321abcdefgh");//m_pComUart->SendStr("kkkkkkkkkkkkkkkkkk");
if(kbhit()) {const int key =getchar();//printf("%c pressed\n", key);
if (key == ‘q‘)break;
}/*else {
fprintf(stderr, "\n");
}*/
/*********************接收的测试案例*************************/memset(Rbuff,0, 256);
nsize= m_pComUart->GetData(Rbuff, 256, 1000);if (nsize > 0)
{
printf("nsize:%d\n", nsize);//if(nCnt==10){
for (i = 0; i < nsize; i++)
{//printf("%02x ", (unsigned char)Rbuff[i]);
fprintf(pFile,"%02x", (unsigned char)Rbuff[i]);if (nCnt == 7) {
fprintf(pFile,"\n");
nCnt= 0;
}else{
nCnt++;
}
}//二进制输入//fwrite (Rbuff , sizeof(char), sizeof(Rbuff), pFile);//nCnt = 0;//}else{//nCnt++;//}
printf("\n");//printf("%s\n", Rbuff);
}//printf("rec buff data:%s\n", Rbuff);//printf("get char: %d\n", m_pComUart->GetChar(10));//sleep(1);//usleep(1000);
}
delete m_pComUart;
fclose (pFile);//线程的操作
if (tty_set_flag == 0)
tty_reset();
}