1
izoabr 2016-01-02 19:47:12 +08:00
你是用串口跟单片机通讯是么?
波特率和奇偶校验设置对么? 还有要确认一下单片机的串口是不是 TTL 电平?如果是 TTL 电平的话你可能要用转换器转一下。 如果都确认没问题,那你就先别用 pyserial 了,用 minicom 之类的先测试一下。 甚至你可以试试用 cat /dev/ttyUSB0 ,看对端有没有数据过来。 如果 minimum 没问题,你再回来检查这个 pyserial 写入数据的时候是不是跟对方协商了结束符,就是对方在等待你输入结束的约定符号,只要没有这个符号,就会一直处于接受状态。比如很常见的用换行符作为结束开始收发切换。 缩进问题,没法判断你的 py 的执行逻辑, read 是在循环内还是循环外啊? |
2
mrsatangel 2016-01-02 19:52:02 +08:00 via iPhone
如果你在搞串口设备,经常要和硬件打交道,建议某宝随便找个 USB 逻辑分析仪比如这个 http://b.mashort.cn/h.hwt56?sm=a9508f
,看看 UART 口有没有电平变化,一步步自下向上查问题。 |
4
honmaple OP @izoabr for 到 print(read)是一个循环, cat /dev/ttyUSB0 这个没反应,后面加了 b'hello\n'也没有反应
|
6
linhua 2016-01-02 20:13:01 +08:00
|
8
honmaple OP @izoabr 我对单片机的确不熟悉,以前只是写过流水灯(c 程序),生成 hex 文件,通过 gSTCISP 写进单片机里,这次需要进行串口通信,所以用 pyserial 模块,可是一直卡在第一步
|
10
izoabr 2016-01-02 20:45:04 +08:00
|
12
dtysky 2016-01-02 21:23:56 +08:00
pyserial 或者说串口模块一般都有 buffer 的
用 while 替代 for 或者用 flush 方法清一下缓冲区就好 一般是 |
13
youngsterxyf 2016-01-03 09:14:27 +08:00
https://github.com/youngsterxyf/WebBasedRobot/blob/master/server_code/operate_serial.py 以前用 pyserial 写的小程序,可以参考
|
14
izoabr 2016-01-03 09:55:35 +08:00
@honmaple 如果你用 minicom 还是有困难你就用 windows 的超级终端哦,不丢人,怎么简单怎么来,简单地容易入门,容易理解。由简入深,学习都是慢慢来的,特别是自学。没必要非得去弄那高逼格的东西。目的是理解和掌握,最后把问题解决对吧。
|