这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [求助]VxWorks中串口操作请教!

共2条 1/1 1 跳转至

[求助]VxWorks中串口操作请教!

菜鸟
2006-11-30 23:27:20     打赏

我想做个串口数据交换程序,就是将串口1收到的数据从串口2发送出来,同时,串口2收到的数据能够从串口1发送出来。程序如下:

void taskDataRecv(void)
{
int fd1;
int fd2;

int num1;
int num2;

char data1;
char data2;

int tyNum1;
int tyNum2;

char tyName1[20];
char tyName2[20];

fd_set data_fds;
char testData=89;
int width;

tyNum1 =1;
sprintf(tyName1, "%s%d", "/tyCo/", tyNum1);
fd1 = open(tyName1,O_RDWR,0);

if (fd1 == ERROR)
{
printf("open tyco1 error\n");
}

else{
printf("open:");
printf(tyName1);
printf(" OK\n");
}
ioctl(fd1, FIOSETOPTIONS, OPT_RAW);
ioctl(fd1, FIOBAUDRATE,9600);
ioctl(fd1, FIOFLUSH, 0);

tyNum2 =2;
sprintf(tyName2, "%s%d", "/tyCo/", tyNum2);
fd2 = open(tyName2,O_RDWR,0);

if (fd2 == ERROR)
{
printf("open tyco2 error\n");
}

else {
printf("open:");
printf(tyName2);
printf(" OK\n");
}
ioctl(fd2, FIOSETOPTIONS, OPT_RAW);
ioctl(fd2, FIOBAUDRATE,9600);
ioctl(fd2, FIOFLUSH, 0);

FD_ZERO(&data_fds);
FD_SET(fd1, &data_fds);
FD_SET(fd2, &data_fds);
width = 0;
width = fd1+fd2+1;

FOREVER
{
if (select(width, &data_fds, NULL, NULL, NULL) != ERROR)
{
if(FD_ISSET(fd1, &data_fds))
{
num1 = read(fd1,&data1,1);
if(num1!=0)
{
printf("get a com1 data");
}
}
if(FD_ISSET(fd2, &data_fds))
{
num2 = read(fd2,&data2,1);
if(num2!=0)
{
printf("get a com1 data");
}
}
}
else
{printf("error\n");}
if (select(width,NULL,&data_fds, NULL, NULL) != ERROR)
{
if(num1!=0)
{
if(FD_ISSET(fd2, &data_fds))
{
write(fd2, &data1, 1);
}
}

if(num2!=0)
{
if(FD_ISSET(fd1, &data_fds))
{
write(fd1, &data2, 1);
}
}
}
}
}

能够打印出“open tyco1 ok”和“open tyco1 ok”,用计算机的串口向串口1发送数据时,能够打印“get a com1 data”,但是不能从串口2 将数据发送出来,而且,串口1自己还向外发送“EE”的数据;再通过计算机向串口2 发数据,就什么发应也没有,也不能打印“get a com2 data”。

恳请各位达人帮忙!!谢谢!!!

[em49][em49][em43]



关键词: 求助     VxWorks     串口     操作     请教     print    

菜鸟
2006-12-07 23:26:00     打赏
2楼

依照本人浅见
Vxworks中COM1名称为"tyCo/0",COM2名称为"tyCo/1".
但是你的程序中
tyNum1 =1;
sprintf(tyName1, "%s%d", "/tyCo/", tyNum1); //实际上打开的是COM2

tyNum2 =2;
sprintf(tyName2, "%s%d", "/tyCo/", tyNum2); //根本不存在这个串口,你打开不了.


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]