У меня есть код C ++ для общения с модемом, основанный на классе BufferedAsyncSerial
(увидеть Вот) используя последовательную библиотеку от boost. С коротким кодом в C ++, как это
BufferedAsyncSerial device("/dev/ttyACM0",9600);
device.writeString("AT\r");
std::cout << device.readString() << std::endl;
boost::this_thread::sleep(boost::posix_time::seconds(2));
std::cout << device.readString() << std::endl;
device.close()
Я могу отправить AT
подать команду на аналоговый модем через последовательный порт /dev/ttyACM0
и получить правильный ответ из порта, а именно:OK
». Промежуток в режиме ожидания обеспечивает модему некоторое время для обработки ввода.
Все это я обернул в класс xmlrpc, чтобы передать чтение / запись через другой компьютер (для теста он фактически идентичен), чтобы получить доступ к функциональности с помощью xmlrpc
с питоном:
device = xmlrpclib.ServerProxy("http://localhost:8080/RPC2")
device.serial.open("/dev/ttyACM0")
device.serial.send("AT\r")
for i in range(100):
time.sleep(0.1)
print device.serial.read()
На стороне сервера C ++ функции open / close / read / и write упакованы соответственно, имя порта такое же, как и скорость передачи данных. Однако при выполнении этих функций Python AT
отправляется на модем (я могу прочитать его через соединение xmlrpc!), но никогда OK
появляется, независимо от того, как часто или как долго я пытаюсь.
Если есть специалист по C ++ / boost / serial / xmlrpc / python, я буду признателен за любые советы. Вот некоторые дополнительные комментарии и замечания:
Задача ещё не решена.
Других решений пока нет …