gpt4 book ai didi

python - 在 Python 中将数据写入 UART 并从 C 中读取它们

转载 作者:行者123 更新时间:2023-11-28 18:34:13 25 4
gpt4 key购买 nike

我正在使用 Python 向串行端口写入一个字节。

import serial

ser = serial.Serial ("/dev/ttyACM0")
ser.baudrate = 115200
ser.write('\x57')
ser.close()

当我将 TX 连接到 RX 时,使用 GtkTerm 读取该字节(从 Python 代码发送)没有问题。但是当我尝试使用 C 在微 Controller 上读取此数据时,我总是读取 240。但是当我使用 GtkTerm 直接发送十六进制数据(查看 -> 发送十六进制数据)时,我读取(在微 Controller 上)适当的值。有什么问题吗?

C 代码:

char byte = getc_();
printf_("1 byte received: i: %i \n",byte);

get_c() 函数:

char getc_()
{
#ifdef LIB_MUTEX
mutex_lock(&mutex_getc_);
#endif

char res = uart_read();

#ifdef LIB_MUTEX
mutex_unlock(&mutex_getc_);
#endif

return res;
}

最佳答案

可能错误的通信速率。将接收/传输波特率更改为 1/4 或 1/6——建议 19200。(或加快传输/接收速度)

240 是 0xF0。使用RS-232,发送数据

Start bit - LS bit - next bit - ... -next bit - MS bit - Stop bit
// or
0 - LS bit - next bit - ... -next bit - MS bit - 1
// or 0xF0
0 - 0 - 0 - 0 - 0 - 1 - 1 - 1 - 1 - 1

如果接收端看到太多的 0 位(至少首先查看有效位),并且接收到的数据是 0 和 1 的位组,这通常意味着数据发送的波特率低于接收方使用的波特率.

破译不匹配波特率的另一个线索是发送字节数与接收字节数的比值。考虑到各种位模式,这不是硬性规定,但数据较多的一侧可能是波特率较高的一侧。

关于python - 在 Python 中将数据写入 UART 并从 C 中读取它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com