这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 串口通讯问题

共6条 1/1 1 跳转至

串口通讯问题

菜鸟
2004-12-02 17:17:25     打赏

各位高手:现小弟遇到一问题望各位指教。我想通过串口达到自发自收;我把程序download入目标机后,检查recvBuf 始终没有东西,为方便各位看现将sendBuf的内容改为a。程序如下:

#include "vxworks.h" #include "ioLib.h" #include "semLib.h" #include "D:\Tornado\target\h\ARCH\I86\ivI86.h"

#define bufSize 10 #define taskStack 20000

void comInterruptSvcRout(void); void comSendTask(void); void displayTask(void);

SEM_ID syncSem; int fd; char sendBuf[bufSize]="a"; char recvBuf[20]; int i = 0;

init() { intConnect(INUM_TO_IVEC(0x04),comInterruptSvcRout,0); syncSem = semBCreate(SEM_Q_FIFO,SEM_EMPTY); taskSpawn("comSend",200,0,taskStack,comSendTask,0,0,0,0,0,0,0,0,0,0); taskSpawn("display",220,0,taskStack,displayTask,0,0,0,0,0,0,0,0,0,0); fd = open("/tyCo/0",O_RDWR,0); ioctl(fd,FIOBAUDRATE,38400); /*ioctl(fd,OPT_LINE,1);*/ } void comSendTask(void)

{ while(1) { write(fd,sendBuf,bufSize); taskDelay(100); } }

void comInterruptSvcRout(void) { semGive(syncSem); }

void displayTask(void) { while(1) { semTake(syncSem,WAIT_FOREVER); read(fd,recvBuf,sizeof(recvBuf)); printf("%s\n",recvBuf); } } 各位请赐教有急用!!!!!




关键词: 串口     通讯     问题    

菜鸟
2004-12-08 00:06:00     打赏
2楼

我是通过网络与目标机连接的,现在是想通过串口达到自发自收的目的,和串口驱动程序没关系。

斑竹,请问logMsg 在什么地方查看?我觉得我的中断程序就没有 起作用,shell下的recvBuf中就没有数据。请快回复。。。。。。!!!~~~~

[em01]

菜鸟
2004-12-08 19:19:00     打赏
3楼

噢 是这样.我看过一些文章觉得ioctl()函数好像有许多的问题,但总找不到是为什么,听你这么一说明白了很多.但我的串口驱动应该怎么修改啊?请赐教.....

另外,我如果直接对MCU的寄存器进行编程,应该怎么写能不能指教一下..多谢!!!!!!.......

[em07]

菜鸟
2004-12-08 19:26:00     打赏
4楼

~~~~~~~~~~~~请问斑竹这种情况下如何挂节ISR,串口的中断为0x04

intConnect(INUM_TO_IVEC(0x04),comInterruptSvcRout,0);这样对吗?

为什么有人说成是intConnect(INUM_TO_IVEC(0x24),comInterruptSvcRout,0);啊

他认为x86系列的cpu的中断偏移量是0x20;所以要写成0x24 这样对吗?

!!!!!!!!

[em07]

菜鸟
2004-12-10 18:11:00     打赏
5楼

各位高手:

你们用串口通信的时候,是用ioctl()还是向串口寄存器里写东西啊?还有中断偏移量加不加?


菜鸟
2004-12-20 17:24:00     打赏
6楼
谢谢上面各位兄弟的指点,,小弟在此一并谢过了!!![em07]

共6条 1/1 1 跳转至

回复

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