|
|
- 写串口的程序的缓冲问题
作者:tony001 时间:2008-9-11 14:00:41
int tsend (int fd)
{bbs.cedn.cn" t) B+ p/ @4 a1 Y
char *p[ ]={ "11","22","33","44","55"};
int i;- D: C4 {& H1 b9 F7 @
ioctl(fd,FIOSETOPTIONS,OPT_RAW);bbs.cedn.cn3 n- `$ P! b9 ?. B
for(i=0;i<5;I++)
{
ioctl(fd,FIOFLUSH,0);
write( fd,*p,3)5 s" g+ b0 t7 M0 B% W* K" a
printf("n");
(*p)++;bbs.cedn.cn, n6 Y `( J; {% j3 `$ ^0 O' F
}
}
X5 c: n9 k7 g! G
void serimain( )
{
int fd=open("/tyCo/0",O_RDWR,0);
ioctl( fd,FIOBAUDRATE,9600);
taskSpawn("send",160,VX_FP_TASK,1024,fd,0,0,0,0,0,0,0,0,0);* F5 ]+ ~! j e; R7 E; c8 F: _# h
}
想把11,22,33,44,55依次写到串口,因为定义的是字符串所以加上有3个字符,所以在write用了参数3,然后在每次写串口时都清理了缓存,但是输出却是# O/ }
11
1
22
22
....
似乎缓存根本没有清除,这是怎么回事?
另外如果我想向串口写的是16进制数,那么应该怎么写?其实我写11就是当16进制数的。还有一个问题,当设置BAUDRATE为115200之后,如果在后面加上报错语句,会显示设置不成功,也就是没法把波特率设为115200,实际上试过比38600大就会设置错误了,这个怎么解决?
请教!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|