我现在面临一个小问题。我目前正在使用Microsoft Visual Studio 2010 Professional和OpenCV进行视频(图像)检测和跟踪,(视觉系统)的结果是通过Arduino平台控制其他硬件。
我的视觉系统代码100%工作,Arduino上的代码也可以100%工作,但是我遇到了从PC到Arduino板通过C / C ++进行通信的问题。 (不能使用Visual Basic等)
目前的规格:Windows 7平台,Visual Studio 2010,OpenCV 2.2.0,Arduino 0022,Arduino Mega板,2个USB到串行转换器进行模拟。
我的代码似乎无法正常运行。但是,我按照下面的例子#opc0de。但为了说明我的观点,下面的代码似乎不起作用(从不声明COM打开(是的,我改为写入端口))。 (将两条串行电缆相互连接,插入两个不同的COM端口,超级终端,实时等,100%工作。我的代码和下面的代码似乎根本不起作用)。 (我的代码长度为+ - 800行,我不喜欢发布,因为COM部分与下面非常类似)。我只是希望串行通信能够正常工作。
我想从COM中获取的是能够发送文本字符串“x = ### y = ###”所以即使是一段简单的代码也会这样(如下所示)(我想在稍后阶段阅读,但我现在并不担心)
#include <Windows.h>
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
char test[] = "Hello";
HANDLE hDevice = CreateFile(L"COM2",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);
if (hDevice !=INVALID_HANDLE_VALUE)
{
printf("Port opened! \n");
DCB lpTest;
GetCommState(hDevice,&lpTest);
lpTest.BaudRate = CBR_9600;
lpTest.ByteSize = 8;
lpTest.Parity = NOPARITY;
lpTest.StopBits = ONESTOPBIT;
SetCommState(hDevice,&lpTest);
DWORD btsIO;
WriteFile(hDevice,test,strlen(test),&btsIO,NULL);
CloseHandle(hDevice);
}
_getch();
return 0;
}
答案 0 :(得分:0)
检查您的代码以确保其单独工作:
首先,使用COM记录器。来自MS的老而好的终端是最差的,但我现在不记得另一个了。看看你的C ++代码是否在那里发送了什么。如果不是,请使其工作:)如果是,请调试Arduino的通信问题。在Arduino上制作一个简单的记录器,看看你在另一部分收到的内容以及你如何处理它。