rv9can писал(а):Добрый день, может кто подскажет готовый код перевода из DEC в Hex, никак не могу сделать
вам для каких целей ?
rv9can писал(а):Добрый день, может кто подскажет готовый код перевода из DEC в Hex, никак не могу сделать
rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol
8bit писал(а):rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol
полагаете free protocol различает десятичное представление числа и шестнадцетиричное ?
sub write_device(short address_in, short func_code, short address_station, short data, short value_data ) // Подфункция для записи
FILL(command[0], 0, 32)
command[0] = address_station
command[1] = func_code
address = address_in
HIBYTE(0x00, command[2])
LOBYTE(address, command[3])
command[4] = data
command[5] = data
CRC(command[0], checksum, 6)
LOBYTE(checksum, command[6])
HIBYTE(checksum, command[7])
OUTPORT(command[0], "Modbus RTU device", 8)
end sub
rv9can писал(а):8bit писал(а):rv9can писал(а):на выходе хочу иметь массив из двух элементов, 0x08 и 0хFC, а дальше хочу отправлять через free protocol
полагаете free protocol различает десятичное представление числа и шестнадцетиричное ?
В любом случае, мне нужно как-то отправлять данные, пробовал напрямую отправить, получал только FC, если можно без перевода буду только рад
rv9can писал(а):Только там реализация с данными которые вписаны в функцию, а мне нужно чтоб, например, если я хочу отправить 2300, первый бит данных был 0х08, а второй 0хFC, и если пользовать введет другое число оно так же переводилось в 16ную сс и делилось на два бита для отправки
8bit писал(а):rv9can писал(а):Только там реализация с данными которые вписаны в функцию, а мне нужно чтоб, например, если я хочу отправить 2300, первый бит данных был 0х08, а второй 0хFC, и если пользовать введет другое число оно так же переводилось в 16ную сс и делилось на два бита для отправки
смотрите функции SWAPW , LOBYTE , HIBYTE, LOWORD, HIWORD
sub short read_device(short address_in, short func_code, short address_station, short data) // Подфункция для опроса
FILL(command[0], 0, 32)
FILL(response[0], 0, 32)
command[0] = address_station
command[1] = func_code
address = address_in
HIBYTE(0x00, command[2])
LOBYTE(address, command[3])
read_no = 1
HIBYTE(0x00, command[4])
LOBYTE(read_no, command[5])
CRC(command[0], checksum, 6)
LOBYTE(checksum, command[6])
HIBYTE(checksum, command[7])
OUTPORT(command[0], "Modbus RTU device", 8)
INPORT(response[0], "Modbus RTU device", 9, return_value)
if(return_value > 0) then
read_data[0] = response[4] + (response[3] << 8)
read_data[1] = response[6] + (response[5] << 8)
end if
return read_data[0], read_data[1], data
end sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 103