как записать символы в последовательный порт

У меня есть древний серийный спектрометр, который работает только на win9x. Я хочу перейти на систему Linux, но существующее программное обеспечение является частным и не будет работать. Я смог получить доступ к консоли внутри спектрометра. Консоль принимает символьные команды клавиатуры и отправляет вывод на последовательный порт.

в vb6 я могу записывать в com-порт значения char http://www.gtwiki.org/mwiki/?title=VB_Chr_Values ​​, используя ComPort.Write (Chr (34))

Я заинтересован в использовании Qt для интерфейса, как я могу отправить что-то с тем же эффектом, что и ComPort.Write (Chr (34)), используя qt?

2
задан 26 January 2014 в 22:59

1 ответ

  • Вот пример с официального сайта Qt (C ++)

    http://qt-project.org/wiki/QtSerialPort

  • Если вы используете Visual Basic, вы можете предпочесть Gambas3

    http://gambasdoc.org/help/comp/gb.net/serialport?v3

    Gambas имеют схожий синтаксис Visual Basic (VB) и поддерживают Qt как набор инструментов GUI.

    См. http://gambasdoc.org/help/comp?v3

  • В Linux / BSD последовательный порт более доступен, чем windows. Таким образом, вы можете даже писать в него из оболочки / терминала или использовать системный вызов из большинства языков программирования.

    Пример в оболочке с телефоном Android в качестве модема, это может помочь для отладки:

    1. Чтение последовательного порта (должен быть root):

      sudo su
      cat /dev/ttyACM0
      

      Поскольку вы можете прочитать только несколько строк по мере необходимости:

      head -n2 /dev/ttyACM0
      
    2. Написание серийного номера, Откройте другую вкладку терминала или окно:

      sudo su
      echo -e "AT" > /dev/ttyACM0
      

      Показывает OK в Окно чтения порта. Также вы можете отправлять шестнадцатеричные данные (используйте опцию -n, чтобы не отправлять новую строку в конце)

      echo -e -n "\x41\x54\x0a" > /dev/ttyACM0
      

      так же, как:

      echo -e "\x41\x54" > /dev/ttyACM0
      

      Оболочка будет отображать не отображаемый шестнадцатеричный код как маленький квадрат с его значением написано внутри него. Попробуйте это.

      echo -e "\x13"
      
0
ответ дан 26 January 2014 в 22:59

Другие вопросы по тегам:

Похожие вопросы: