|
本人初学VxWorks,前不久刚安装了虚拟机,运行也正常,WDB_COMM_END
现在想试一个与串口进行通信的例子,我所用的程序在下面,编译下载都没有问题,串口助手也打开并且
设置了,
可是依次运行open_com1,config_com1和send_com1后串口却没有反应(没有任何显示),要写向串口的数
据却在shell下显示了,
不知这是什么原因呢?对串口的操作不就是对文件的操作吗?
拜托各位大虾和斑竹一定帮帮忙啊,能说的详细些就更好了,谢谢、谢谢、谢谢了!!!!!!!
/*uart.c--serious transimiting or receiving*/
/*头文件*/
#include
#include "strLib.h"
#include
#include
#include
#include
#include
#include
#include
#include "types/vxTypesOld.h"
/* global variables */
int width;
int fd; /*串口设备文件描述符*/
int accept_com1_ID,send_com1_ID;
struct fd_set fds_data;
struct fd_set data_fds;
/* pre_declaration */
int open_com1 ( ) ;
int config_com1 ( void ) ;
int accept_com1 ( void ) ;
int send_com1 ( void ) ;
extern STATUS close(fd);
/* 打开串口*/
int open_com1() /*打开串口2函数 */
{
int fd;
fd = open("/tyCo/0",O_CREAT|O_RDWR,0); /*打开串口并返回串口设备文件描述符*/
if(fd==ERROR) /*如果不能打开串口1则打印出错信息*/
printf("You can’t open port com1!\n");
else printf("open Com1 successfully!\n");
}
/* 配置串口*/
int config_com1(void) /*串口1配置函数*/
{
ioctl(fd,FIOSETOPTIONS,OPT_LINE); /*设置串口工作模式为行模式:LINE_MODE */
/*OPT_LINE is incleded in iolib.h*/
ioctl(fd,FIOBAUDRATE,9600); /*设置串口波特率为9600bps*/
ioctl(fd,FIOFLUSH,0); /*清空输入输出缓冲*/
ioctl(fd,SIO_HW_OPTS_SET,CS8|STOPB|PARENB|PARODD); /*设置 8 位数据位,2位停止位
,带校验位,奇校验*/
ioctl (fd, FIOSETOPTIONS,OPT_ECHO | OPT_CRMOD | OPT_TANDEM | OPT_7_BIT);
printf("set options successfully\n");
}
/* 串口接收数据 */
/* 串口发送数据 */
int send_com1(void) /*向串口1发送数据函数*/
{
char *send_buf ="Hello,Data had accept!"; /*待发送数据*/
write(fd,send_buf,strlen(send_buf));
/*任务阻塞等待写串口准备完毕*/
}
/*关闭串口*/
extern STATUS close(fd)
{
close(fd);
}
|
|