Исправление. Размер пакета не верный
This commit is contained in:
@@ -12,17 +12,17 @@ var tick: int = 0
|
||||
|
||||
class Spt25Serial extends SerialPort:
|
||||
func send_to(data: PackedByteArray):
|
||||
tools.allways(data.size() >= 2, 'длина буфера меньше необходимого')
|
||||
tools.allways(data.size() >= 3, 'длина буфера меньше необходимого')
|
||||
var i_sum: = data.size() - 3
|
||||
var csd: = data.slice(0, i_sum)
|
||||
var v_sum: = get_check_sum(csd)
|
||||
data.encode_u16(i_sum, 0)
|
||||
var v_sum: = get_check_sum(data)
|
||||
data.encode_u16(i_sum, v_sum)
|
||||
return write_raw(data)
|
||||
write_raw(data)
|
||||
|
||||
func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт']
|
||||
|
||||
func get_check_sum(src: PackedByteArray) -> int:
|
||||
var P_DIV: = 0xF0B8
|
||||
var P_DIV: = 0xf0b8
|
||||
var FCS = ~((src[2]<<8) + src[1])
|
||||
for i in range(3, src.size()):
|
||||
var C = src[i]
|
||||
|
||||
@@ -15,15 +15,16 @@ class SPT25 extends unit.Unit:
|
||||
|
||||
func _init(nm) -> void:
|
||||
self.name = nm
|
||||
tx_data.resize(8)
|
||||
tx_data.resize(9)
|
||||
tx_data[0] = 0x7e # Флаги синхронизации пакета
|
||||
tx_data[1] = 0 # Адрес абонента, которому предназначен пакет
|
||||
tx_data[2] = CmdCode.INFO # Тип пакета, КОД КОМАНДЫ - Получить информацию о состоянии преобразователя
|
||||
tx_data[3] = 0 # Данные
|
||||
tx_data[4] = 0 # Данные
|
||||
tx_data[5] = 0 # Данные
|
||||
tx_data[6] = 0 # Контрольная сумма
|
||||
tx_data[7] = 0x7e # Флаги синхронизации пакета
|
||||
tx_data[6] = 0 # Контрольная сумма мл. байт
|
||||
tx_data[7] = 0 # Контрольная сумма ст. байт
|
||||
tx_data[8] = 0x7e # Флаги синхронизации пакета
|
||||
|
||||
|
||||
func parse(rx_data: PackedByteArray, tick: int):
|
||||
|
||||
Reference in New Issue
Block a user