博客迁移
IOT2040 串口表示 Linux将所有UARTs表示为ttyS,其中 x = 0, 1 对应内部设备,2, 3对应外部设备
修改指令
IOT2040 ```指令:switchserialmode
Usage: switchserialmode DEVICE [MODE [-t|–terminate]]
DEVICE The device for which you want to switch the mode. MODE
The mode you want to use: rs232, rs485, or rs422.
If omitted, the current mode will be printed.Optional arguments: -t, --terminate Terminate the RS422 or
RS485 bus. ```例子:switchserialmode /dev/ttyS2 RS485 --terminateIOT2050 ```指令:switchserialmode It’s used to set external serial port mode. Usage:
switchserialmode [ttyuart [options]] | [cp210x [options]] | [-m,--mode MODE]
Example:
switchserialmode ttyuart -h
switchserialmode cp210x -h
switchserialmode -m,–mode <rs232 | rs485 | rs422> [-t,–terminate]
-t,–terminate: Terminate the rs422 or rs485 bus.指令:switchserialmode ttyuart -h
It’s to operate tty serial device.
-h,–help: display help information.
-D,–device: specified device, like ‘/dev/ttyS1’ etc.
-m,–mode mode: set serial work mode, the mode can be set ‘rs232’ or ‘rs485’ or ‘rs422’.
-l,–logic level: set RTS-pin logic level when sending in rs485 mode, logic can be set ‘0’ or ‘1’.
-d,–display: display the current mode of ttyuart1. 查看:switchserialmode ttyuart -D /dev/ttyS2 -d 2. 设置:switchserialmode ttyuart -D /dev/ttyS2 -m RS485 -t # 设置开机启动 ## **IOT2040** 1. 创建文件:vi /etc/init.d/changetty.sh 2. chmod 755 /etc/init.d/changetty.sh 3. 修改文件 ``` #! /bin/sh # /etc/init.d/changetty.sh ### BEGIN INIT INFO # Provides: changetty # Required-Start: # Should-Start: # Required-Stop: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: changetty ### END INIT INFO echo '/etc/init.d/changetty.sh' switchserialmode /dev/ttyS2 RS485 --terminate exit 0
- 将启动脚本链接到 /ect/rcX.d
/etc/init.d/changetty.sh /etc/rc3.d/S20changetty ln -s /etc/init.d/changetty.sh /etc/rc4.d/S20changetty ln -s /etc/init.d/changetty.sh /etc/rc5.d/S20changetty ``` 5. 执行并替换文件 ```switchserialmode /dev/ttyS2 RS485 --terminate switchserialmode /dev/ttyS2 RS422 --terminate switchserialmode /dev/ttyS2 RS232 sed -i s/.*switchserialmode.*/'switchserialmode \/dev\/ttyS2 RS485 --terminate'/ /etc/init.d/changetty.sh
IOT2050
- 在/root 目录中创建 changetty.py ```
#! /usr/bin/python3import sys import subprocess import json from collections import
OrderedDictclass Process:
def init(self):
self.configureFile = ‘/etc/board-configuration.json’
self.config = self.getConfig()def getConfig(self): with open(self.configureFile, 'r') as f: config = json.load(f, object_pairs_hook=OrderedDict) return config def saveConfig(self, jsonSrc): with open(self.configureFile, 'w') as f: json.dump(jsonSrc, f, indent=4, separators=(',', ': ')) def setBasicBoard(self, mode, terminateStatus): command = 'switchserialmode ttyuart -D /dev/ttyS2 -m ' + mode subprocess.call(command, shell=True) self.config['User_configuration']['External_Serial_Init_Mode'] = mode if terminateStatus == 'on' or terminateStatus == 'off': self.config['User_configuration']['External_Serial_Terminate'] =
terminateStatus
self.saveConfig(self.config)def main(argv):
try:
process = Process()print(argv[1]) # mode print(argv[2]) # terminateStatus process.setBasicBoard(argv[1], argv[2]) except: pass finally: print('end world') return ''
if name == ‘main’:
main(sys.argv)2. 在NodeRed 中调用脚本
python changetty.py RS485 ‘on’ python changetty.py RS422 ‘on’ python changetty.py RS232 ‘on’