串口通信反思

  首先就是今天白天搞的串口数据接收,主要是实现终端发消息,通过无线,服务端能够接受到。

很简单我只需要接收到消息就可以了,但是我把线连错了,简单来说就是我接错地方,具体是哪里我也有点模糊,明天再看看。

4bf09be9069a420f96a2ec81eea97430.jpeg

第二个错误是波特率,我修改的有问题,应该是15200,但是我用的9600 怎么可能有数据,越想越傻逼。很好这两个错误解决后,就是嘎嘎乱杀的好吗?

但是接下来我们收的数据是很乱的,需要解析数据是什么意思,然后就用到了一个停产的串口,我明明有下载过,但是找不到了,很疑问,明天查一下。

这个是我找到的PL2303HXA驱动教程

PL2303HXA自2012已停产,请联系供货商的解决方法_pl2303hxa自2012已停产,请联系供货商-CSDN博客

通过sscom解析后,我们发现这是一个大概40位的字符类,而有效的是323135 这六位,而我们通过Data 24~2a一个find函数进行查找

s.find(Data,)

解决这个问题

反思一下感觉自己今天很是鸡肋。,没有任何用处。就出去暴走,本来想着九点回来,但是老登硬控我,回来,看着老登解决了问题然后才走的。

1。读懂代码

class Ser(threading.Thread):
    def init(self, dev="/dev/ttyUSB1", bt='115200'):
        #这里需要注意用到是哪个设备USB1还是USB0 ,波特率会直接影响接下来的是否接受都数据
        #def ini(self, dev ="com5", bt='9600'):
        self.serSer = serial.Serial(dev, int(bt))
        
    def send(self,text):
    #text是个字节串,如果是字符串需要先将其转换为字节串
        self.serSer.write(text)
        
    def rec(self):
        serDataLen = self.serSer.inWaiting() #串口接收数据
        if serDataLen>5:
            print(SerData)
            
    def run(self):
        global dSerIO,d8_16
        serDataLen = 0
        #待读取的字节个数
        serDataIn = ""
        d8_16 = "123456"
        i = 90
        buf = ""
        #buf是待拼接的字符
        while True:
            # print(i)
            # i = i+1
            serDataLen = self.serSer.inWaiting() #串口接收数据
            serData = self.serSer.read(serDataLen)#读取数据
            if serData:
                buf = buf + serData
                loc_data = buf.find("Data")#find查找
                loc_2a = buf.find("2a")
                if loc_data>-1 and loc_2a>loc_data:
                    s = buf[loc_2a-6:loc_2a]
                    print(s)
                    buf = ""      
ser = Ser()
ser.init()
ser.start()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值