发送消息时RS232出现0x0A和0x0D问题

时间:2018-08-29 11:54:34

标签: perl serial-port

我正在运行一个编写消息的代码,并将其通过RS232总线发送到设备。

当消息上有0A(换行)或0D(回车)字符(或两者都有)时,我遇到了问题。

阅读方告诉我,它不理解该消息(通过向我发送NAK响应)。我推断出问题在于这两个字符。

即:

worker2

是否想到了如何发送相同的信息而不必更改0A或0D?

我用于发送消息的代码是这样的:

022620255846060A00003003
022620255946060D00003703

$ msg等于上述代码之一,而$ ob_w是端口本身。

谢谢

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在这种情况下,这是与串行端口配置有关的问题。

通过更改

$ob_w->stty_icrnl (1);
$ob_w->stty_ocrnl (1);
$ob_w->stty_onlcr (1);
$ob_w->stty_opost (1);

收件人:

$ob_w->stty_icrnl (0);
$ob_w->stty_ocrnl (0);
$ob_w->stty_onlcr (0);
$ob_w->stty_opost (0);

将修复该消息。上面的某些命令将0x0A和0x0D更改为0x0A0D,因此在这种特殊情况下,接收计算机计算校验和并丢弃消息,因为接收和生成的校验和不相同。