2013-07-17 57 views
0

爲了向外部設備發送命令,我使用FTDI的TTL-232R-3V3線。我想在那裏設定具體的路徑,以高或低。奇偶或停止位不是必需的。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的經驗嗎? 在此先感謝!

回答

0

某些示例或其某個依賴項正在使用pthread,但未配置Makefile。

編輯Makefile並將-pthread添加到CFLAGSLDFLAGS。您可以通過添加行來達到這一目的。

CFLAGS += -pthread 
LDFLAGS += -pthread 

但是,您可能根本不需要D2XX庫。 FTDI內核驅動程序應該創建一個可以像「真實」串行端口一樣使用的設備。

+0

非常感謝!抱歉回覆晚了。是的,你說得對,有一個名爲'ttyUSB0'的設備。我嘗試按照[this](https://en.wikibooks.org/wiki/Serial_Programming:Unix/termios#open.282.29)教程中的描述打開串口。我下載了termios頭文件,但我無法執行它。什麼是FD?這是一個變量嗎? Eclipse只是說:'Symbol'fd'無法解析'。你(或其他人)知道一個好的教程嗎? – IndexOutOfBoundsException

+0

fd是文件描述符的常用變量名稱。正如'int fd = open(「/ dev/ttyUSB0」,O_RDWR | O_EXCL);'好的,那個教程有很多重要的部分,你只需要聲明fd爲'int fd;'''''' 'termios.h'文件已經在你的Linux系統上,它是系統頭文件之一。如果沒有,您可能需要使用軟件包管理器來安裝系統頭文件。 –

+0

好的。我現在已經管理(我希望如此)打開,自定義和關閉端口。 [在這裏查看代碼](http://ubuntuone.com/2OI7ffdDMjpZWOuZ5xFbrG)。但我不知道我必須使用什麼命令來設定一條路徑爲高/低。我有一個LED連接到地,另一條線連接到「串行端口」連接到我的電腦時打開。我該如何關閉又重新打開它? – IndexOutOfBoundsException