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 --terminate
IOT2050
指令: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 ttyuart
例子:
- 查看:switchserialmode ttyuart -D /dev/ttyS2 -d
- 设置:switchserialmode ttyuart -D /dev/ttyS2 -m RS485 -t
设置开机启动
IOT2040
- 创建文件:vi /etc/init.d/changetty.sh
- chmod 755 /etc/init.d/changetty.sh
- 修改文件
#! /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
ln -s /etc/init.d/changetty.sh /etc/rc2.d/S20changetty
ln -s /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
- 执行并替换文件
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/python3
import sys
import subprocess
import json
from collections import OrderedDict
class 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)
- 在NodeRed 中调用脚本
python changetty.py RS485 'on'
python changetty.py RS422 'on'
python changetty.py RS232 'on'