vxworks的UART环回测试

问题描述

我试图编写命令行UART回送测试。首先,我使用' devs '查找串行端口: / tyCo / 0 。然后,我打开了用于读取/写入的串行端口: fd = open(“ / tyCo / 0”,2)

由于 read ()似乎是一个阻塞的调用,因此我尝试创建一个任务来执行读取: sp(read,fd,&W,0x10)其中 W = malloc(0x10)

我尝试写入fd: write(fd,“ HELLO”,5),但是当我在&W中显示内容时,我会感到无用。

当我列出正在运行的任务时,我看到为读取而创建的任务是“ PENDING”,优先级为100。我已经使用 taskPrioritySet ()为其分配了不同的优先级,但无济于事

我希望我创建的任务会在执行 write ()时唤醒,而我希望在 read ()调用中立即阻止该任务

关于如何完成命令行UART回送测试的任何想法?

解决方法

如您建议的那样,

read呼叫正在阻塞,但是只有在没有要读取的内容时才阻塞。因此,您不必为其生成任务,可以从命令行调用它(如果由于缺少输入而阻塞该任务,则可以通过终端发送CTRL-C来中断该调用并重新启动命令行任务)

另一点是,W是指向分配的内存的指针。无需获取它的地址(而且我不确定VxWorks shell是否处理其变量的地址引用)

作为免责声明,目前我没有系统可以测试以下这些步骤。但是,在完成您要尝试做的事情之后,这就是它的外观。

总结起来,这应该是MWE:

fd=open("/tyCo/0",2)
W=malloc(0x10)
write(fd,"HELLO",5)
read(fd,W,0x10)
d W

请注意,tyCo / 0通常是用于vxWorks Shell通信的串行端口。因此,请确保您实际上使用的端口名称正确。

要验证fileDescriptor上的操作,可以抛开串行端口并打开文件作为测试。至少您可以确定可以按预期方式读写fileDescriptor。

fd=open("testFile",0x10)
d W

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...