python 開啟多個串列埠傳送資料的測試

2021-09-11 01:46:59 字數 2843 閱讀 1201

# -*- coding: utf-8 -*-

import serial,time,threading,struct

# pip install pyserial

class serialsmng():

# list=[name,bps,pixstyle,width, name,bps,pixstyle,width,]

#["com3",250000,0x13, 45,"com4",250000,0x13, 45]

def __init__(self,lst):

self.ser_count=int(len(lst)/4)

self.ser_arr=

for x in range(0,self.ser_count):

idx=x*4

sop = serialop(lst[idx],lst[idx+1],lst[idx+2],lst[idx+3])

print(lst[idx],lst[idx+1],lst[idx+2],lst[idx+3])

print(self.ser_arr)

def setdata(self,idx,data):

sop=self.ser_arr[idx]

sop.d.setdatatoarray(data)

def setdataandsend(self,idx,data):

sop = self.ser_arr[idx]

#print("******************x")

#print( data)

#print(sop.d.pkglen)

if not sop.busy:

sop.d.setdatatoarray(data)

#print(sop.d.buf)

sop.serialsend()

def splitdata(self,data,sidx=0,eidx=0):

b= eidx<=len(data) and sidx>=0 and eidx-sidx>0

if(b):

d= data[sidx:eidx]

return b,d

return false,

def sendframedata(self,data,pixstyle=4,width=45,height=15):

datlen = len(self.ser_arr)

#每個串列埠裝置控制一行

c=0u=pixstyle*width

#print(u)

for x in range(datlen):#

#獲取切割的資料,傳送到對應的節點

b,d= self.splitdata(data,c * u, (c + 1) * u)

#print(c, c * u, (c + 1) * u,b,d)

if b:

#串列埠傳送1

self.setdataandsend(x,d)

c+=1

def sendframedata_splited(self,data):

dvclen = len(self.ser_arr)

datlen = len(data)

#每個串列埠裝置控制 data 乙個子陣列的資料

if dvclen9999:

c=0def thread_srecv(self):

while 1:

print("recv:\n")

print(self.ser.readline()) # 可以接收中文

if __name__ == "__main__":

def main():

# client socket

sop = serialop("com3", 250000, 0x13, 45)

# 分別啟動聽和說執行緒

# t = threading.thread(target=sop.thread_ssend) # 注意當元組中只有乙個元素的時候需要這樣寫, 否則會被認為是其原來的型別

# t.daemon=true

# t.start()

# t1 = threading.thread(target=sop.thread_srecv)

# t1.daemon=true

# t1.start()

import time

while 1:

sop.testcreatedatatosend()

time.sleep(1)

#main()

sconfig=["com21", 250000, 0x13,45,"com210", 250000, 0x13, 45]#

smng=serialsmng(sconfig)

while 1:

#print(smng.ser_arr[0])

#smng.setdata(0, [0xff, 0, 0, 0xff, 0, 0, 0xff, 0, 0])

smng.setdataandsend(0, [0xff, 0, 0, 0xff, 0, 0])

time.sleep(1)

smng.setdataandsend(0, [0,0xff, 0, 0, 0xff,0])

time.sleep(1)

smng.setdataandsend(0, [0, 0,0xff, 0, 0,0xff])

time.sleep(1)

smng.setdataandsend(0, [0xff, 0xff, 0xff, 0xff, 0xff, 0xff])#'''

time.sleep(1)

print('123')

#ser.close()

引用的檔案詳見前文

python實戰串列埠助手 7串列埠傳送

上次發的帖子的接收是有異常的,昨天下班時,反覆的測試,發現問題很大,晚上不想睡覺了,就起來修改除錯,終於搞定乙個沒有異常的版本讀取函式,如果有使用我 的,把下面2個函式替換一下即可,但是還有個問題沒有解決,就是顯示到text文字框沒有實現,我還要再繼續研究一下,傳送函式,一次只能發乙個,超過乙個就無...

python使用with結構開啟多個檔案

erp odoo 553490191 考慮如下的案例 同時開啟三個檔案,檔案行數一樣,要求實現每個檔案依次讀取一行,然後輸出,我們先來看比較容易想到的寫法 with open filename1,rb as fp1 with open filename2,rb as fp2 with open fi...

Python基礎 使用with結構開啟多個檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!考慮如下的案例 同時開啟三個檔案,檔案行數一樣,要求實現每個檔案依次讀取一行,然後輸出,我們先來看比較容易想到的寫法 with open filename1,rb as fp1 with open filename2,rb as fp2 with ...