2

Visual Studio と C を使用して Arduino ボードにデータを送信したいと考えています。 ARToolKit を使用してマーカーを取得し、それに応じてデータを送信しているため、特に C を使用する必要があります。

私はコードを試していました

#include<stdio.h>
#include<stdlib.h>
void main()
{
    system( "MODE COM9: BAUD=9600 PARITY=n DATA=8 STOP=1" ) ;
    FILE port = fopen( "COM9:", "wb" ) ;
    printf("hello");
    fprintf( port, "s" ) ;
    fclose( port ) ;
}

しかし、コンパイルされていません。

データを送るしかない。

4

3 に答える 3

4

あなたの投稿から、プログラムをフラッシュなどに書き込むのではなく、Visual Studio を使用してデータを送信する必要があることがわかりました。これは、私のマシンでテキストテストを送信するために作成した例です。

#include "stdafx.h"
#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;
}
于 2011-11-14T16:18:21.723 に答える
1

最初に確認することは、arduino のシリアル ポートと通信できるかどうかです。XP以前ならハイパータームが付いていますが、windows vista+7には付いていないので、http: //ttssh2.sourceforge.jp/のようなものが必要です。

ps - システム コールで作成されたモード パラメータが呼び出し元の環境に「固定」されるか、シェルの終了時にリセットされるかはわかりません。適切に行う方法については、 Windows シリアル ポート プログラミングの例を参照してください。

于 2011-11-14T16:10:06.040 に答える
0

CPPWindows は動作しますが、C++ でも動作します。OPENCV/ARTOOLKIT や C で書かれたもの (C++ ではない) を使ってシリアルデータを送信したい皆さんへ。私が投稿したコードは現在機能しています。いくつかの変更が必要でした。最終的なコードは次のとおりです。(COM ポートの変更ではありません)

#include<stdio.h>
#include<stdlib.h>
void main()
{
    FILE* port;
    system( "MODE COM1: BAUD=9600 PARITY=n DATA=8 STOP=1" ) ;
    port = fopen( "COM1:", "wb" ) ;
    printf("s");
    fprintf( port, "s" ) ;
    fclose( port ) ;
}
于 2011-11-18T10:45:36.423 に答える