내 무지 때문에 죄송하지만 FTDI 칩 리눅스 소프트웨어 개발에 매우 익숙합니다. 4 포트 출력 (릴레이) 및 4 포트 광 절연 입력 장치로 프로그래밍 된 FT245RL 칩 기반 모듈이 있습니다. C의 인터넷 프로그램에서 출력 D0 ~ D3에 연결된 릴레이를 켜거나 끄는 것을 발견했습니다. 컴파일 후 제대로 작동합니다. 이 작업 프로그램의 초안 아래 :FT245RL 핀의 상태 읽기
/* switch4.c
* # gcc -o switch4 switch4.c -L. -lftd2xx -Wl,-rpath,/usr/local/lib
* Usage
* # switch4 [0-15], for example # switch4 1
* */
#include <stdio.h>
#include <stdlib.h>
#include "./ftd2xx.h"
int main(int argc, char *argv[])
{
FT_STATUS ftStatus;
FT_HANDLE ftHandle0;
int parametr;
LPVOID pkod;
DWORD nBufferSize = 0x0001;
DWORD dwBytesWritten;
if(argc > 1) {
sscanf(argv[1], "%d", ¶metr);
}
else {
parametr = 0;
}
FT_SetVIDPID(0x5555,0x0001); // id from lsusb
FT_Open(0,&ftHandle0);
FT_SetBitMode(ftHandle0,15,1);
pkod=¶metr;
ftStatus = FT_Write(ftHandle0,pkod,nBufferSize,&dwBytesWritten);
ftStatus = FT_Close(ftHandle0);
}
내 질문에 대한 답변입니다. 같은 프로그램, 입력으로 프로그래밍 된 D4 ~ D7 핀의 상태를 어떻게 읽을 수 있습니까? 출력 핀 (또는 모든 입력/출력 핀)의 상태 (0 또는 1)를 나타내는 숫자를 표준 출력하는 "printf"를 의미합니다. 아무도 초보자를 도와 줄 수 있습니까?
UPDATE-1
이
// # gcc -o read5 read5.c -L. -lftd2xx -Wl,-rpath,/usr/local/lib
#include <stdio.h>
#include <stdlib.h>
#include "./ftd2xx.h"
int main(int argc, char *argv[])
{
FT_STATUS ftStatus;
FT_HANDLE ftHandle0;
UCHAR BitMode;
FT_SetVIDPID(0x5555,0x0001); // id from lsusb
ftStatus = FT_Open(0,&ftHandle0);
if(ftStatus != FT_OK) {
printf("FT_Open failed");
return;
}
FT_SetBitMode(ftHandle0,15,1);
ftStatus = FT_GetBitMode(ftHandle0, &BitMode);
if (ftStatus == FT_OK) {
printf("BitMode contains - %d",BitMode);
}
else {
printf("FT_GetBitMode FAILED!");
}
ftStatus = FT_Close(ftHandle0);
}
FT_GetBitMode
내 프로그램입니다하지만 반환 "FT_GetBitMode 실패!" 대신 BitMode 값
그래서 내가 문서의 약자로 FT_GetBitMode를 사용하려고합니다. 하지만 "FT_GetBitMode FAILED!"가 반환됩니다. 대신 BitMode의 값. 첫 번째 게시물에 UPDATE-1 내 프로그램 소스. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? – mackowiakp
FT_GetBitMode() 호출에서 반환되는 ftStatus 코드는 무엇입니까? 코드에서 거기에 뭔가 잘못하고있는 것처럼 보이지 않습니다. 당신은 그들에게 이메일을 보낼 수 있습니다, 나는 그들이 당신을 도울 것이라고 확신합니다 : [email protected] – spatial
흠, 이상합니다. ftStatus 코드는 FT_GetBitMode() 호출에서 숫자 4로 반환됩니다. 그러나 Windows 용 테스트 프로그램이 있기 때문에 하드웨어 오류가 아니며 제대로 작동합니다. – mackowiakp