这是我的一段代码。之后我会解释这个问题。
GIOStatus ret;
GError *err = NULL;
gchar *msg;
gsize *len;
ret = g_io_channel_read_chars (koncentrator, &msg, 13, &len, err);
printf ("Read %u bytes: %hx\n", len, msg);
我的设备通过串行端口发送 13 个字节的链。不幸的是,只有前两个字节被正确读取。也许这是因为只有前两个字节可以解释为 ASCII 字符,这会很奇怪,因为我使用函数将编码设置为 NULLg_io_channel_set_encoding(koncentrator, NULL, NULL);
如果我尝试在前两个之后访问字节Segmentation fault
,这也很奇怪,因为ret
读取后的变量包含13
这意味着它已经读取了 13 个字节。
我尝试使用g_io_channel_read_line
and g_io_channel_read_to_end
。有了这两个程序,程序就会陷入无限循环(即使我验证了条件G_IO_STATUS_EOF
)。
最后一个问题,也许是最烦人的是第一次不工作,我需要用终端打开串口,cutecom
例如。否则我可以发送数据,但它不会检测到任何回调。我确信这一点,因为该设备具有指示RX
和状态的二极管TX
。
我不知道出了什么问题,如果能给我一些提示或指向合适示例的链接,我将非常感激。我觉得在谷歌上我找不到更多的东西了。谢谢,干杯!