『壹』 python獲取串口設備的描述

importwinreg

key=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"{36FC9E60-C465-11CF-8056-444553540000}")
foriinrange(winreg.QueryInfoKey(key)[0]):
subkey=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,"SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}\"+winreg.EnumKey(key,i))
print(winreg.QueryValueEx(subkey,'DriverDesc'))
winreg.CloseKey(subkey)
winreg.CloseKey(key)




importwinreg

key=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"")
try:
i=0
while1:
name,value,type=winreg.EnumValue(key,i)
print(repr(name),value)
i+=1
value,type=winreg.QueryValueEx(key,"EnableAutoTray")
exceptFileNotFoundError:
print
exceptOSError:
print

以前回答過一個,好像跟你說的意思差不多,都是讀取注冊表,一個讀USB,一個是串口

『貳』 python 用實參向串口寫入數據無法成功

在a = 。。。那行下邊加一個print a 看看輸出的a是什麼來判斷問題。

『叄』 Python如何進行多串口通信一個串口控制電機 一個串口採集數據

下載 pyserial包
def OpenCom(self,*args): #設置埠和波特率 selComPort =『com2』 #波特率 selBaudRate =9600 #奇偶校驗 selParity = 'N' try: if(not self.mySerial): self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,bytesize=8,parity=selParity,stopbits=1,timeout=5) else: if(self.mySerial.isOpen()): self.mySerial.close() self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate, bytesize=8, parity=selParity, stopbits=1, timeout=5) self.lblInfo['text'] = '打開成功!' except Exception as ex: self.lblInfo['text'] = '打開失敗!'

#使用com口發送modbus協議給終端設備。
def btnEmId_Click(self):
barray = bytearray([0x05, 0x03, 0xA#, 0x54, 0x00, 0x08])
vOldEmId = self.txbOldEmId.get()
vNewEmId = self.txbNewEmId.get()
barray[0] = int(vOldEmId)
barray[5] = int(vNewEmId)
#crc校驗
strInput = utils.crc16_append(barray)
print(barray)
n = self.mySerial.write(barray)
if(n > 0):
str = self.mySerial.readall()
self.lblInfo['text'] = 'success!'
# for s in str:
# print (hex(s))
else:
self.lblInfo['text'] = 'error!'

『肆』 python 串口傳輸問題

首先用USB線連上串口設備,然後確認是哪個COM口,下面用COM3為例。

import serial

t=serial.Serial('COM3',115200)
command = "aabbccddee" //十六進制字元串
t.write(command.decode("hex")) //轉換成十六進制發送,否則設備不認識
print t.read(16)

『伍』 串口發送16進制1234,用python接收的是'\x01\x01\x03\x04'但用python再怎麼轉換成原來的數據1234呢

假設你接收到的'x01x02x03x04'儲存在a變數中,

你想要轉換為1234儲存在b變數中,那麼可以參考進行如下操作:

>>> a='x01x02x03x04'

>>> b=''

>>> for i in s:

b=b + str(ord(i))

>>> b

'1234'

>>> b = int(b) #如果要將b轉為數值變數,則使用int()

>>> b。

(5)python3串口擴展閱讀:

十六進制的轉換

數學的計算方法

主條目:進制轉換

十進制轉十六進制

采余數定理分解,例如將487710轉成十六進制:

4877÷16=304....13(D)

304÷16=19....0

19÷16=1....3

1÷16=0....1

這樣就計到487710=130D16

編程中的函式

Visual Basic

十六進制轉換為十進制:十進制(Long型)=CLng("&H" & 十六進制數(String型))

十進制轉換為十六進制:十六進制數(String型)=Hex$(十進制)

Javascript

Javascript 能以 toString() 函數來將十進制數字轉為其他任意進制格式(String類型)

Python

調用Python內置int()函數把該字串轉為數字。

『陸』 如何用python實現串口通信

Python非常適合寫一些測試的腳本,如快速的串口通信測試等。如果使用VC++ QT開發,可能用時較多,使用python,如果掌握使用方法,可以直接讀寫測試,配合設備或是串口助手,很快驗證與實現。
Python有沒有現成的串口API直接調用呢?經過實踐驗證,需要安裝一個叫 Pyserial的組件即可。這個可以在github上下載。

在windows 7 64bit 上可以使用嗎?當然可以使用,我安裝的python3.5為64位的。把下載後的文件,其中有一個serial的文件夾,拷貝到python35安裝路徑, C:\Python35\Lib\site-packages\serial
網上可以搜一下windows的安裝包,安裝完也是:C:\Python35\Lib\site-packages\serial ,可以用最新的版本,替換即可。
測試的方法:在python IDE里測試:
>>> import serial
這里如果報錯,是python版本與pyserial版本沒有配合好。如果正常,不返回,即可以導入serial模塊。
>>> ser=serial.Serial("COM5",115200)
這里為COM5,115200的波特率。如果打不開,請檢查安裝環境。
>>> ser.write('hello,serial test'.encode())
17
發送測試(如果返回位元組數,說明返回成功),這里需要轉換一個編碼為位元組。
以上測試,可以使用現在的設備或是串口助手,如安裝Virtual Serial Port Driver 7.2 虛擬串口軟體,設置一對串口,進行自發自收的測試。
>>> print(ser.readline())
b'abcdefg\r\n'
這里是串口接收,有接收的超時。設備或是串口助手發送一個字元串,以回車換行結束,這里就可以收到列印出來。
也可以用ser.read(),這里只接收一個字元來實現。
上面已經實現了基本的串口操作。
關閉串口為:
>>> ser.close()
如果使用python,一般寫個py文件,就像windows bat 批處理一樣,這是python強大的地方。如果寫一個py腳本呢?其實只要把上面的命令,一條條寫下來,就是一個腳本,測試如下:
import serialser=serial.Serial("COM5",115200,timeout=0.5)for i in range(0,100-1):ser.write('hello\r\n'.encode())print(ser.readline());ser.close()

『柒』 linux中python怎麼打開串口

一個Python實現的串口Echo

import serial
import sys
try:
ser = serial.Serial('/dev/ttyUSB0', 9600)
except Exception, e:
print 'open serial failed.'
exit(1)
print 'A Serial Echo Is Running...'
while True:
# echo
s = ser.read()
ser.write(s)
# write to stdout and flush it
sys.stdout.write(s)
sys.stdout.flush()


『捌』 如何用python寫個串口通信的程序

使用pyserial庫,是最簡單的!!!

import serial
ser = serial.Serial() # open 'COM1', baudrate=9600, etc
ser.write('string out')
ser.read(1) # read 1 byte from COM port
# ...
ser.close()<img id="selectsearch-icon" src="https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/iknow/qb/select-search.png" alt="搜索">

『玖』 python如何獲取串口前面的名稱

樓上的方法太復雜,用serial庫就可以,親測可用:

importserial.tools.list_ports
port_list=list(serial.tools.list_ports.comports())
iflen(port_list)==0:
print('找不到串口')
else:
foriinrange(0,len(port_list)):
print(port_list[i])

參考:網頁鏈接