python模組安裝、串口操作、位元組轉換、exe產生、CRC計算

來源:互聯網
上載者:User

標籤:學習   路徑   註冊   背景   ret   支援   server   版本   測試   

 python模組安裝、串口操作、位元組轉換、exe產生、CRC計算

背景:    第一次採用python製作小工具,已安裝版本2.7.9的python;1.pyCharm license註冊問題  採用License server, license server address:(http://xidea.online)2.pyCharm下調試  在檔案下建立項目,然後再建立檔案,就可以使用整合調試了;3.串口操作--外部包  可通過在cmd下直接運行:pip install pyserial4.crc效驗---外部包  可通過windows下cmd運行:pip install crcmod  5.byte與ASCII碼轉化--內部包binascii6.python產生EXE---外部包PyInstaller7.串口操作API用法(1)開啟串口API---Serial("COM19",115200)  [注意]:這邊有看到第一個參數有人寫0(對應COM1),但提示輸入錯誤,要求輸入字串類型,輸入‘0‘依然不行;(2)讀操作API---read(n)  需要提前知道返回字串長度  返回strAPI---readline()  讀取一行,以OA 或者OD結束  返回str,str裡面的值為ASCII碼的字元形式,比如0X30需要寫成‘3‘;對其處理,需要轉化成十六進位;API---readlines()  讀取多行,  返回list還有其它方案說是配合:API---inwaiting()  返回接收的字串長度,再把這個值給read()來讀取出來;  測試沒成功;API---readall()  測試沒成功;(3)寫操作API---write(data)  data為str,str裡面的值為ASCII碼的字元形式的,比如0X33需要寫成‘3‘;方法後面介紹;8.byte轉化為ASCIIAPI---unhexlify(data)  將byte型(16進位的值);轉化為ASCII字元形式的,如0X33代表字元‘3‘;用於組包後將資料轉化為字元型,再傳輸;API--hexlify(data)  將ASCII字元資料,轉化為byte(十六進位形式的),比如將接收的資料,進行處理後,再進行其它後續處理,如crc效驗等;9.crc效驗API--mkCrcFun(0x11021,rev=False,initCrc=0x0000,xorOut=0x0000)   0x11021代表CRC-16 XMODEM(X16+X12+X5+1)例子:   crc16_Xmodem = crcmod.mkCrcFun(0x11021,rev=False,initCrc=0x0000,xorOut=0x0000)   readFun = ‘68020000‘   readCrcOUT = hex(crc16_cmodem(unhexlify(readFun)))   輸出來的值為0x1234之類的,str類型10.PyInstaller   python下將py檔案編譯成exe形式的方式有兩種:PyInstaller和py2exe;   安裝方式:cmd下輸入:pip install PyInstaller  (1)操作方式   在存放.py的檔案夾下開啟當前路徑的cmd,然後pyinstaller -F 檔案.py   [注意]:1.pip install PyInstaller中千萬要注意大小寫,看了網上很多都是pyinstaller,然後一直安裝不成功;  pip install py2exe依然沒有裝成功;2.關於PyInstaller和py2exe兩者的比較,說是,用py2exe會在產生exe的檔案夾裡同時生產一堆檔案,PyInstaller只會產生一個;  另一方面:說是,py2exe對32位或者64位的相互支援不好,32位上生產的到64位上有可能不能用;我用的PyInsataller,在32位上生產,64位上也可用;3.PyInstaller區分32位和64位,安裝和python位制一致的即可;4.關於是否需要將用到的模組拷貝到 .py的目錄下  網上有人說需要放置在一起,我嘗試了沒有放置在一起,依然可以11.字串的處理  (1)截取部分   data = data[:-4]   #將最後4個幹掉      data = data[2:4]   #擷取字串中的第3和第4個      (2)替換    data = data.replace(‘需要被替換的內容‘,‘替換前者的內容‘)[技巧]:1.檢測模組是否安裝成功:模組安裝完成後,可在cmd下輸入python,再import 模組名,看看是否安裝成功;2.檢測API傳回值類型:print(type())3.CRC模組算出來的值可以通過工具(CRC Calculator 表徵圖是算盤)進行效驗下代碼:聲明:沒有做封裝,也沒有注意寫法和命令等,純粹為了實現功能和學慣用;
# -*- coding:UTF-8 -*-from serial import *from binascii import *from crcmod import *import time# def crc16Cal(x):#     a = 0x0000#     b = 0x1021#     for byte in x:#         a ^= ord(byte)#         a <<= 8#         for i in range(8):#             a <<= 1#             last = a & 0x8000#             if last == 1:#                 a ^= b#     s = hex(a)#     return s[4:6]+s[2:4]readFun = ‘68020000‘crc16_cmodem = crcmod.mkCrcFun(0x11021,rev=False,initCrc=0x0000,xorOut=0x0000)readCrcOUT = hex(crc16_cmodem(unhexlify(readFun)))readCrcOUT = readCrcOUT[2:4]+readCrcOUT[4:6]print(readCrcOUT)readFun += readCrcOUTprint(readFun)readFun = unhexlify(readFun)ser = Serial("COM19",115200)print(readFun)ser.write(readFun)data = ser.read(58)data =hexlify(data)print(data)data = data.replace(‘68023400‘,‘68033400‘)print(data)data = data[:-12]print(data)data += ‘03000000‘print(data)readCrcOUT = hex(crc16_cmodem(unhexlify(data)))readCrcOUT = readCrcOUT[2:4]+readCrcOUT[4:6]print(readCrcOUT)data += readCrcOUTprint(data)data = unhexlify(data)ser.write(data)#sleeptime.sleep(2)#resetreset = ‘68010000‘readCrcOUT = hex(crc16_cmodem(unhexlify(reset)))readCrcOUT = readCrcOUT[2:4]+readCrcOUT[4:6]reset += readCrcOUTreset = unhexlify(reset)ser.write(reset)ser.close()     

  

 

 

python模組安裝、串口操作、位元組轉換、exe產生、CRC計算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.