COM软件管理
本页包含所有可用的COM软件管理功能 AnyMath .
|
使用com软件控制功能 AnyMath ,按照指定的方式安装硬件支持包 文章. 安装后,运行:
接下来,您需要创建一个COM对象。:
|
#
Main.EngeeDeviceManager.Devices.COM.close — Method
COM.receive(device, port::String, bytes_to_read::Int64) → Vector{UInt8}
从端口读取指定数量的字节。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType: COM 对象。 -
port::String: 端口名称。 -
bytes_to_read::Int64:要读取的字节数。
"""@binding: Main.EngeeDeviceManager.Devices.COM.receive @typesig: Tuple{Main.EngeeDeviceManager.Devices.COM.ComType, String, Int64} """
COM.close(device, port::String)
关闭 COM 端口并释放资源。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType:COM 对象。-port::String:端口名称。
#
Main.EngeeDeviceManager.Devices.COM.get_devices — Method
COM.get_devices(device) → Vector{String}
返回可用 COM 端口的列表(例如,["COM1", "COM3", "/dev/ttyUSB0"] )。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType: COM 对象。
#
Main.EngeeDeviceManager.Devices.COM.init — Method
COM.init(device, port::String, baudrate::Int64, bytesize::String, parity::String, stopbits::String)
设置端口的配置。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType:COM对象。 -
port::String:端口名称。 -
baudrate::Int64:波特率。标准值:110、300、600、1200、2400、4800、9600、14400、19200、38400、57600、115200、128000、230400、256000、460800、921600。 -
bytesize::String:字节大小。允许的字符串值: -"FIVE_BITS":5位; -"SIX_BITS":6 位; -"SEVEN_BITS":7 位; -"EIGHT_BITS":8 位。默认值为
"EIGHT_BITS"。 -
parity::String:奇偶校验。允许的字符串值: -"PARITY_NONE":无奇偶校验位; -"PARITY_EVEN":偶校验(even); -"PARITY_ODD":奇校验(odd); -"PARITY_MARK":校验位始终为 1(mark); -"PARITY_SPACE":校验位始终为 0(space)。 -
stopbits::String: 停止位。允许的字符串值:-
"STOPBITS_ONE": 1 个停止位; -"STOPBITS_ONE_POINT_FIVE": 1.5 个停止位; -"STOPBITS_TWO": 2 个停止位。
#
Main.EngeeDeviceManager.Devices.COM.open — Method
COM.open(device, port::String)
打开具有指定配置的 COM 端口。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType: COM 对象。 -
port::String: 端口名称。
#
Main.EngeeDeviceManager.Devices.COM.receive — Method
COM.receive(device, port::String, bytes_to_read::Int64) → Vector{UInt8}
Reads the specified number of bytes from the port.
Arguments
-
device::Main.EngeeDeviceManager.Devices.COM.ComType: COM object. -
port::String: port name. -
bytes_to_read::Int64: number of bytes to read.
#
Main.EngeeDeviceManager.Devices.COM.transmit — Method
COM.transmit(device, port::String, message::Vector{UInt8}) → Int64
发送字节数组。返回已发送的字节数。
参数
-
device::Main.EngeeDeviceManager.Devices.COM.ComType: COM 对象。 -
port::String: 端口名称。 -
message::Vector{UInt8}: 字节数组。
使用COM(虚拟端口)的分步示例
对于没有物理设备的测试,通过以下方式使用虚拟COM端口很方便 索卡特. 设置一对相关的伪终端:
socat -d -d PTY,link=/tmp/ttyV0,b9600 PTY,link=/tmp/ttyV1,b9600 &
现在 /tmp/ttyV0 和 /tmp/ttyV1 -虚拟 «跳线»:写入一个端口的所有内容都是从另一个端口读取的。
创建COM对象
com = COM.Com()
获取端口列表
ports = COM.get_devices(com)
println("Доступные порты: $ports")
港口的初始化和开放
port_send = "/tmp/ttyV0"
port_recv = "/tmp/ttyV1"
# Инициализация с идентичными параметрами
COM.init(com, port_send, 9600, "EIGHT_BITS", "PARITY_NONE", "STOPBITS_ONE")
COM.init(com, port_recv, 9600, "EIGHT_BITS", "PARITY_NONE", "STOPBITS_ONE")
# Открытие портов
COM.open(com, port_send)
COM.open(com, port_recv)
数据交换
data = UInt8[]
for i in 1:20
push!(data, i)
# Отправка накопленных байт
sent = COM.transmit(com, port_send, data)
println("Отправлено $sent байт: $data")
# Прием такого же количества байт
received = COM.receive(com, port_recv, length(data))
println("Получено байт: $received")
@assert data == received
end
使用非标准参数
速度连接示例 19200, 6 数据位,奇偶校验 甚至, 2 停止位:
COM.init(com, "/tmp/ttyV2", 19200, "SIX_BITS", "PARITY_EVEN", "STOPBITS_TWO")
COM.open(com, "/tmp/ttyV2")
data = UInt8[0x01, 0x02, 0x03]
COM.transmit(com, "/tmp/ttyV2", data)
received = COM.receive(com, "/tmp/ttyV3", length(data))
-完成工作_
COM.close(com, port_send)
COM.close(com, port_recv)
println("Порты закрыты")