, чтобы отправлять команды на внешнее устройство, я использую провод TTL-232R-3V3 от FTDI. Я хочу установить там определенные пути к высоким или низким. Биты четности или остановки не нужны.FTDI TTL с Linux
Моя операционная система - Ubuntu Linux 13.04.
Я хочу разработать приложение Java или C, которое может отправлять эти команды. Но есть ошибка, когда я пытаюсь установить драйвер для провода:
Я следую инструкции this, и я решил установить драйвер D2XX. Я думаю, что я успешно установил общий объект и статическую библиотеку, как описано в шаге 2.1, так или иначе, я не получил сообщений об ошибках.
Но когда я пытаюсь скомпилировать пример кода, как описано в шаге 3, я получил следующий вывод, выполняющий команду make -B
.
for n in BitMode EEPROM/erase EEPROM/read EEPROM/write EEPROM/user/read EEPROM/user/size EEPROM/user/write Events LargeRead MultiThread SetVIDPID Simple Timeouts ; do make -C $n || exit 1; done
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/BitMode'
gcc main.c -o bitmode -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/BitMode'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/erase'
gcc main.c -o erase -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/erase'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/read'
gcc main.c -o read -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/read'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/write'
gcc main.c -o write -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/write'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/read'
gcc main.c -o readua -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/read'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/size'
gcc main.c -o sizeua -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/size'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/write'
gcc main.c -o writeua -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/EEPROM/user/write'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/Events'
gcc main.c -o events -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/Events'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/LargeRead'
gcc main.c -o largeread -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/LargeRead'
make[1]: Betrete Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/MultiThread'
gcc main.c -o multi -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples/MultiThread'
gcc main.c -o multi -Wall -Wextra -L. -lftd2xx -Wl,-rpath /usr/local/lib
/usr/bin/ld: /tmp/ccoAsrRg.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5'
/usr/bin/ld: note: '[email protected]@GLIBC_2.2.5' is defined in DSO /lib/x86_64-linux- gnu/libpthread.so.0 so try adding it to the linker command line
/lib/x86_64-linux-gnu/libpthread.so.0: could not read symbols: Ungültiger Vorgang
collect2: Fehler: ld gab 1 als Ende-Status zurück
make[1]: *** [multi] Fehler 1
make[1]: Verlasse Verzeichnis '/home/robin/Dokumente/Java/Stepper/lib/release/examples /MultiThread'
make: *** [subdirs] Fehler 1
Как исправить эту ошибку? Кто-нибудь сталкивается с этим проводом и Linux? Спасибо заранее!
спасибо! Извините за столь поздний ответ. Да, вы правы, есть устройство под названием 'ttyUSB0'. Я попытался открыть последовательный порт, как описано в [this] (https://en.wikibooks.org/wiki/Serial_Programming:Unix/termios#open.282.29). Я загрузил файл заголовка termios, но я не могу его выполнить. Что такое fd? Это переменная? Eclipse просто замечает: 'Symbol 'fd' не может быть разрешен'. Вы (или кто-то еще) знаете хороший учебник? – IndexOutOfBoundsException
fd - это обычное имя переменной для дескриптора файла. Как и в 'int fd = open ("/dev/ttyUSB0 ", O_RDWR | O_EXCL);' Ok да, этот учебник содержит большинство важных частей, вам просто нужно объявить fd как 'int fd;' Обычно вы должны иметь 'termios.h' уже в вашей системе Linux, это один из заголовков системы. Если нет, вам может понадобиться использовать диспетчер пакетов для установки заголовков системы. –
Хорошо. Теперь я сумел (надеюсь) открыть, настроить и закрыть порт. [Посмотреть код здесь] (http://ubuntuone.com/2OI7ffdDMjpZWOuZ5xFbrG). Но я не знаю, какую команду мне нужно использовать, чтобы установить один путь на высокий/низкий. У меня есть один светодиод, подключенный к земле и к одному другому проводу, который включен, когда я подключаю «последовательный порт» к компьютеру. Как отключить и снова включить его? – IndexOutOfBoundsException