【发布时间】:2020-01-03 12:43:00
【问题描述】:
我正在使用外部 Modbus 库 - 用 C 编写 - 使用串行连接从 Linux 机器连接到微控制器 Modbus 从站。我也在使用 wxWidgets 在 Linux 机器上创建一个应用程序,它在后台运行一个 Modbus 主机。
其中一个 Modbus 函数接受 Modbus 主设备应连接到的串行端口的名称。在我的 Linux 机器上,那是 /dev/ttyS4。在我使用的函数中,参数类型定义为const char*。当我将参数作为字符串文字(即"/dev/ttyS4")传递时,该函数可以正常工作。然而,当我第一次定义一个变量如下:
const char mbPort[] = {'/', 'd', 'e', 'v', '/', 't', 't', 'y', 'S', '4'};
然后将该变量传递给函数,它不起作用 - 我不确定为什么会这样。在 Windows 中以类似方式传递变量时,它工作正常。在 Windows 中,我的 mbPort 变量如下所示:
const char mbPort[] = { '\\', '\\', '.', '\\', '\\', 'C', 'O', 'M', '5' };
所以现在我不确定这是否是我的代码中的错误,或者这是否与我正在使用的操作系统有关。这是我正在使用的 Modbus 函数的声明:
modbus_t* modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);
任何帮助将不胜感激。
【问题讨论】:
-
请注意,
"/dev/ttyS4"将以空值结尾,而{'/', 'd', 'e', 'v', '/', 't', 't', 'y', 'S', '4'}则不会。 -
感谢您的快速回复。您完全正确,将
'\0'添加到 my 变量的末尾即可解决问题!
标签: c++ linux string char constants