Не удалось отправить данные последовательной связи
У меня есть устройство Digi ZigBee, которое настроено (код Python) для последовательной отправки данных через COM-порт. На другом конце последовательной связи есть встроенная плата, которая принимает данные.
После того, как я подключил digi (отправка данных) к встроенной плате, digi после отправки нескольких перезагрузок данных (COM PORT закрывается). Но встроенная плата остается живой на протяжении всего периода.
Эта встроенная плата имеет программное обеспечение, с помощью которого я могу видеть его логи. Когда я проверил журналы, я получил некоторые данные (три значения датчика), и цифровое устройство умирает. Я не знаю, где возникает проблема. Это с устройством digi-zigbee, которое отправляет данные или PYTHON CODE(используется в устройстве digi) или со встроенной платой, которая получает данные?
Вот только часть исходного кода Python:
open()
flushInput()
flushOutput()
while True:
# Retrieve a sample reading from the LT
io_sample = xbee.ddo_get_param(sensor_address, "is")
light = parseIS(io_sample)["AI1"]
temp = parseIS(io_sample)["AI2"]
hum = parseIS(io_sample)["AI3"]
mVanalog = (float(temp) / 1023.0) * 1200.0
temp_C = (mVanalog - 500.0)/ 10.0 # - 4.0
lux = (float(light) / 1023.0) * 1200.0
print "hum:%f" %hum
sync=254
temp=round(temp_C,2)
light=round(lux,2)
no_temp = len(str(temp))
no_light = len(str(light))
total_length=no_temp+no_light+3+3
if total_length<256:
low_byte=total_length
high_byte=0
else:
low_byte=total_length%256
high_byte=high_byte/256
msg_id_low=0
msg_id_high=0
checksum=low_byte+high_byte+msg_id_low+msg_id_high+ord('#')+ord(':')+ord(',')
t=str(temp)
for c in t:
if c == '.':
checksum+=ord('.')
else:
checksum+=ord(c)
t=str(light)
for c in t:
if c == '.':
checksum+=ord('.')
else:
checksum+=ord(c)
checksum=256-(checksum%256)
if checksum == 256:
checksum=0
print "Checksum Value after applying mod operator:%d" %checksum
packet=str(chr(254))+str(chr(low_byte))+str(chr(high_byte))+str(chr(msg_id_low))+str(chr(msg_id_high))+str('#')+str(temp)+str(':')+str(light)+str(',')+str(chr(checksum))
print "packet:%s" %packet
bytes_written = write(packet)
print "bytes_written : %s value : %s" %(bytes_written,packet)
time.sleep(5)
Этот код получает значение температуры и освещенности от датчиков и преобразует его в пакет (синхронизацию, контрольную сумму и т. Д.) Для отправки на встроенную плату.