项目背景
1 嵌入linux 环境,一个无源码第三方程序固定读串口 /dev/ttyS0 的gps数据。
2 没有多余的串口了
3 ublox 方案的gps模块支持i2c 接口
解决方案
1 创建虚拟串口
2 建立一个软连接 将虚拟串口软链接到 /dev/ttyS0
2 python 读取gps,将读到的数据写到虚拟串口
代码如下,30行python 解决
#! /usr/bin/env python
#coding=utf-8
import pty
import os
import time
from periphery import I2C
import array
def mkpty():
master, slave = pty.openpty()
slaveName = os.ttyname(slave)
print '\nslave device names:', slaveName
return master
if __name__ == "__main__":
master = mkpty()
i2c = I2C("/dev/i2c-0")
while True:
msgs = [I2C.Message([0xfd]), I2C.Message([0xff,0xff], read=True)]
i2c.transfer(0x42, msgs)
msglen = (msgs[1].data[0])*256 +msgs[1].data[1]
if msglen:
msgs = [I2C.Message([0xff]*msglen, read=True)]
i2c.transfer(0x42, msgs)
msgstr="".join([chr(c) for c in msgs[0].data])
os.write(master, msgstr)
else:
time.sleep(0.1)
i2c.close()
|