Visual Studio 2010에서 OpenCV을 사용하여 개체를 추적하고 있으며 카메라에 연결된 servos를 회전시키기 위해 Arduino에 값을 보내려고합니다. Arduino Uno을 사용하고 있습니다. 객체를 추적하고 카메라를 회전해야하는 방향을 결정하는 코드 인 C++을 완성했지만이 데이터를 Arduino로 보내는 데 문제가 있습니다. 현재이 케이블에 RS-232 케이블을 사용하려고합니다. 저는 Arduino를 프로그래밍하기 위해 Type-B USB 케이블을 사용하고 Visual Studio에서 Arduino로 데이터를 보내려고 RS-232를 사용하고 있습니다. 프로그램이 제대로 된 방향을 통신 할 수 있다면보고 두 개의 서로 다른 LED가 빛을 시도하기 위해 사용하고 내가이있는 아두 이노 코드 측에Visual Studio 2010 Arduino 직렬 통신
int portspeed(int centerpix, int xmid)
{HANDLE hDevice = CreateFile(L"COM5",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);
DCB lpTest;
GetCommState(hDevice,&lpTest);
lpTest.BaudRate = CBR_9600;
lpTest.ByteSize = 8;
lpTest.Parity = NOPARITY;
lpTest.StopBits = ONESTOPBIT;
SetCommState(hDevice,&lpTest);
DWORD btsIO;
if (centerpix<xmid)
{
char test[] = "2";
WriteFile(hDevice,test,strlen(test),&btsIO,NULL);
cout << "Turn right " << test << endl;
}
else
{
char test[] = "3";
WriteFile(hDevice,test,strlen(test),&btsIO,NULL);
cout << "Turn left " << test << endl;
}
return 0;
}
: 여기에 비주얼 스튜디오 시리얼 통신에 대한 내 코드는
int incomingByte = 0; // For incoming serial data
void setup()
{
Serial.begin(9600); // Opens serial port, sets data rate to 9600 bit/s
}
void loop()
{
// Send data only when you receive data:
if (Serial.available() > 0)
{
incomingByte = Serial.read();
if (incomingByte==50) //if =2
analogWrite(9,100);
else
analogWrite(9,0);
if (incomingByte==51) //if =3
analogWrite(10,50);
else analogWrite(10,0);
delay(3000);
}
else
analogWrite(9,255);
}
내 해석 I는 (연속적으로 직렬 통신을 통해 데이터를 전송)를 C++ 프로그램을 시작하고 RX 핀에 RS-232에서 TX 핀을 부착 할 필요가있다 : 그것은 회전해야 (디지털 0) Arduino에. stk500_getsync() :하지 동기화 : 나는이 오류를 부여하고있는 아두 이노에 프로그램,
avrdude 업로드 할 때 인공 호흡기를 = × 00
내가가는 전선이 경우에만 발생 이 와이어가 아무 것도 연결되어 있지 않아도 RX 핀에 연결하십시오. 이 오류는 RX가 9600의 전송 속도로 입력을 찾고 있기 때문에 발생하지만 C++ 프로그램이 실행 중이고 9600의 속도로 데이터를 전송할 때도 여전히이 오류가 발생합니다.
어떻게 할 수 있습니까? 직렬 통신을 통해 랩톱에서 실시간 이미지 처리를 수행하는 Visual Studio 프로젝트에서 Arduino로 가치를 보냅니 까?
왜 런타임 데이터에 대한 별도의 시리얼 케이블을 사용하는 대신 같은 USB 직렬 채널을 통해 전송하기 프로그램을 다운로드하는 데 사용된다? –
저는 시리얼 통신에 익숙하지 않고 초기 프로그래밍과 관련이없는 데이터를 유형 b usb를 통해 계속 보낼 수 있다는 것을 깨닫지 못했습니다. 먼저 Arduino를 프로그래밍 한 다음 arduino를 프로그래밍하는 데 사용 된 것과 동일한 포트에 C++을 작성하여 C++ 프로그램을 실행합니까? – jalconvolvon
예. 그냥 직렬 포트처럼 취급하십시오. 수정 사항을 스케치에 다운로드하기 전에 사용자 정의 프로그램에서 포트를 릴리스 (또는 종료)해야합니다. 또한 레벨 쉬프터없이 rs232 케이블을 사용했다면 과전압으로 arduino가 손상되었을 수 있습니다. 첫 번째 질문은 사용자 정의 케이블을 제거하고 PC 부팅 후 사용자 정의 프로그램을 실행하지 않고 프로그램하는 경우입니다. –