2013-11-27 2 views
2

У меня недавно был проект по общению с конкретными устройствами через кабель RS-232. так как у моего компьютера нет последовательного порта, я использую провод USB-RS-232 для промежуточного соединения между устройствами и моим компьютером. но я новичок в драйверах Linux, поэтому мне сложно понять эту идею.Как связаться с устройствами через провод USB-to-RS232 в Linux?

Я работаю под Debian с рабочим драйвером по умолчанию, и я тестировал все, что можно было сделать на стороне оборудования, и нашел все в порядке. теперь дело в том, как отправлять команды на устройства и получать соответствующие данные в C. Я читал несколько книг, и я думаю, возможно, что отображение порта USB будет устройством tty.

Я думаю о правильном пути? Я немного смущен. я загрузил исходный код «minicom» и прочитал несколько строк, но я все еще не совсем понял. Пожалуйста, помогите мне.

+1

Правильно установленное устройство USB для RS232 должно создать устройство COM-порта в файловой системе Linux, что-то вроде/dev/ttyS0. Имея это устройство, вы можете написать стандартную программу обмена последовательным портом, это не имеет значения, является ли это реальным последовательным портом или эмуляцией USB. http://stackoverflow.com/questions/6947413/how-to-open-read-and-write-from-serial-port-in-c –

+0

@AlexFarber: На самом деле устройства USB-to-RS232 обычно называются '/DEV/ttyUSB0'. – rodrigo

+0

@AlexFarber: большое спасибо! я собираюсь обратиться к этому вопросу. – HuStmpHrrr

ответ

3

Возможно, ваш USB-to-RS232 использует чип FTDI. Идея в Linux заключается в том, что любые драйверы, добавленные в ядро, могут получить доступ, манипулируя записью в/dev файловой системе.

Самое первое, что вам нужно знать при работе с Linux (или любым вариантом UNIX), состоит в том, что все является файлом. Таким образом, в отличие от Windows (где производитель создает DLL и сообщает вам, какие функции для вызова) в Linux вы используете стандартные функции файловой системы (обратите внимание на пуристов: я оставляю ioctl для простоты)

Так что посмотрите в dev и посмотрите, какие записи появляются, когда вы включаете свой «провод» и что исчезает, когда вы его вынимаете. Как упоминалось roderigo, файл устройства, скорее всего, называется ttyUSB0, но ttyS0 не является невозможным.

В вашей программе вы затем открыть этот «файл»: fd = open("/dev/ttyUSB0", O_RDWR) Вы можете использовать функции write и read для отправки и получения символов с вашего ком порта. Когда вы закончите закрывать порт с помощью close(fd)

Чтобы настроить параметры линии, найдите либо источник миникомпании, либо документацию Linux для структуры termios.

Обнаружить книгу «Программирование на Linux развязано» Курта Уолла и др. Я думаю, что это необходимо для тех, кто пишет C-код для приложений, работающих в Linux.

Удачи.

+0

Чтобы определить, к какому имени устройства назначается адаптер, вы можете подключить его и посмотреть, что последнее сообщение [dmesg] (http://en.wikipedia.org/wiki/Dmesg) скажет. Параметры линии также можно установить с помощью утилиты [stty] (http://unixhelp.ed.ac.uk/CGI/man-cgi?stty). – yegorich

+1

«Руководство по серийному программированию для операционных систем Posix» является хорошей ссылкой: http://www.cmrr.umn.edu/~strupp/serial.html – Preston

Смежные вопросы