|
引用 4 楼 morris88 的回复:
引用 3 楼 flashzyx 的回复:
谢谢回复.
这个建议不错,不过不能治本
如果错误出现了,但是这时候又没有接收到数据,同样还是发送不了
不明白你的意思。我说的那个貌似应该做在驱动层吧。
哦,接收数据不是接收到数据,我可以理解为只要有人read,让驱动自动调用TxStart启动发送。
如果还是没有找到其他的原因,我会尝试这个方法,不过还想就此请教下
1.如果某次通讯只是单纯地发出去,不要求回复,还是有可能造成数据的没发或者晚发
2.修改驱动问题,正常情况串口驱动让我们实现的部分是如下结构中的函数。如果要做
到有人read,让驱动自动调用TxStart启动发送,就需要修改ttyDrv.c,ttylib.c文件,
这两个文件一般不去修改的?
struct sio_drv_funcs /* driver functions */
{
int (*ioctl)
(
SIO_CHAN * pSioChan,
int cmd,
void * arg
);
int (*txStartup)
(
SIO_CHAN * pSioChan
);
int (*callbackInstall)
(
SIO_CHAN * pSioChan,
int callbackType,
STATUS (*callback)(void *, ...),
void * callbackArg
);
int (*pollInput)
(
SIO_CHAN * pSioChan,
char * inChar
);
int (*pollOutput)
(
SIO_CHAN * pSioChan,
char outChar
);
};
|
|