シリアル送信

サンプルプログラム(入力した文字列を送信)

「コマンドプロンプト」などから入力した文字列を送信するプログラムを作ってみましょう。
/* 
    BCC版シリアル送信プロトタイプ
    入力した文字列を送信(rs_send02.c)
*/

#include <windows.h>
#include <stdio.h>

/* シリアルポート初期化関数 */
void InitSer(DCB dcb, HANDLE* hComm, BaudRate baud)
{

    *hComm = CreateFile(
        "COM1",                       /* シリアルポートの指定 */
        GENERIC_WRITE, /* アクセスモード */
        0,                            /* 共有モード */
        NULL,                         /* セキュリティ属性 */
        OPEN_EXISTING,                /* 作成フラグ */
        FILE_ATTRIBUTE_NORMAL,        /* 属性 */
        NULL                          /* テンプレートのハンドル */
    ); 
  
    GetCommState(*hComm, &dcb); /* DCB を取得 */
    dcb.BaudRate = baud;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    SetCommState(*hComm, &dcb); /* DCB を設定 */

}

void chop(char* input)
   /* 文字列の最後の改行を\0に変換 */
{
    int i;
    
    for(i=0; input[i]!='\n'; i++){
        ;
    }
    input[i]='\0';
}

int main( void )
{
    DCB dcb;            /* 通信パラメータ */
    HANDLE hComm;       /* シリアルポートのハンドル */
    DWORD writesize;    /* ポートへ書き込んだバイト数 */
    BaudRate baud=38400;    /* BaudRate設定用 */
    char input[1024];   /* 入力用 */

    InitSer(dcb, &hComm, baud);
    
    printf("送信文字列を入力:");
    fgets(input, 1024, stdin);
    chop(input);
    
    WriteFile(hComm, input, strlen(input), &writesize, NULL); 
        /* シリアルポートに書き込み */

    CloseHandle(hComm);


    return(0);
}

実行結果

コマンドプロンプトなどから文字列を入力し、 最後にエンターを入力すると、 文字列が送信されます。

ハイパーターミナルで受信してみました。

since 2004/07/18(Sun)

BorlandC++Compilerの目次へ

トップページへ

広告 万馬券 無料レンタルサーバー ブログ blog