Python module installation, serial port operation, byte conversion, EXE generation, CRC calculation
Background: For the first time, use Python to make gadgets, installed version 2.7.9 python;1.pycharm license registration problem with License server, license server address: (HTTP://XIDEA.O nline) 2.pyCharm debugging under the file to create a new project, and then create a new file, you can use integrated debugging; 3. Serial operation-External package can be run directly under cmd: PIP install PYSERIAL4.CRC---external package Can be run through Windows cmd: Pip install crcmod 5. BYTE and ASCII conversion--Internal package Binascii6.python generate EXE---external package PyInstaller7. Serial Operation API usage (1) Open the serial Port API---Serial ("COM19", 115200) [note] : Here you see the first parameter someone wrote 0 (corresponding to COM1), but prompt for input error, require input string type, input ' 0 ' still not, (2) Read Operation API---read (n) need to know in advance the return string length returned STRAPI---readline () read a row, At the end of OA or OD return str,str the value of ASCII code, such as 0x30 need to write ' 3 ', processing it, need to convert to 16 binary; API---readlines () read multiple lines, Back to list there are other schemes that say mate: the API---inwaiting () returns the length of the string received, then reads the value to read (), the test is unsuccessful, the API---readall () test failed, and (3) The write operation API---write ( Data) data for the str,str inside the value of the ASCII character form, such as 0x33 need to write ' 3 '; The method is described later; 8.byte is converted to ASCIIAPI---unhexlify (data) will be byte type (16 binary value) Converted to ASCII characters, such as 0x33 for the character ' 3 ', for the packet after the data into a character type, and then transfer, api--hexlify (data) to convert ASCII character data into byte (16 binary form), such as the received data, after processing, Other subsequent processing, such as CRC validation, etc. 9.CRC Api--mkcrcfun (0x11021,rev=false,initcrc=0x0000,xorout=0x0000) 0x11021 represents CRC-16 XMODEM (x16+x12+x5+1) Example: Crc16_xmodem = Crcmod.mkcrcfun (0x11021,rev=false,initcrc=0x0000, xorout=0x0000) Readfun = ' 68020000 ' readcrcout = Hex (Crc16_cmodem (unhexlify)) output comes with a value of readfun and the like, str type 10. There are two ways to compile the py file into exe form under Pyinstaller python: Pyinstaller and Py2exe; Installation: cmd input: Pip install Pyinstaller (1) operation mode in the storage. Py Folder Open the cmd for the current path, and then pyinstaller-f the file. py [Note]:1.pip install Pyinstaller must pay attention to the case, see the online a lot of is pyinstaller, and then have been installed unsuccessful; Pip install py 2exe is still not installed successfully; 2. On the comparison between Pyinstaller and Py2exe, it is said that the py2exe will produce a bunch of files in the folder where EXE is generated, Pyinstaller will only generate one; on the other hand: Say yes, Py2exe to 32-bit or 64-bit mutual support is not good, 32-bit on the production of 64-bit may not be used; I use the Pyinsataller, on the 32-bit production, 64-bit is also available; 3. The Pyinstaller distinguishes between 32-bit and 64-bit, and the installation is consistent with the Python-bit system, 4. About whether you need to copy the module used to the. py Directory online Someone said need to put together, I tried not to put together, still can 11. String processing (1) Intercept section data = data[:-4] #将最后4个干掉 data = Data[2:4] #获取字符串中的第3和第4个 (2) Replace data = Data.replace (' What needs to be replaced ', ' replace the contents of the former ') [Tip]:1. Detect if the module is installed successfully: After the module is installed, you can enter Python under CMD and import the module name to see if the installation is successful; 2. Detection API return value type: print (Type ()) 3.CRC the value calculated by the module can be obtained through the tool (CRC CalCuLator icon is the abacus) to carry out the code: Declaration: No encapsulation, no attention to writing and command, etc., purely for the purpose of realizing the function and learning;
#-*-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 <<= = 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 (data) print (data) data = Data.replace (' 68023400 ', ' 68033400 ') print ( Data) data = Data[:-12]print (data) Data + = ' 03000000 ' Print (data) Readcrcout = Hex (crc16_cmodem (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 module installation, serial port operation, byte conversion, EXE generation, CRC calculation