/*
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);
}

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

ハイパーターミナルで受信してみました。
| 広告 | 花 万馬券 | 無料レンタルサーバー ブログ blog | |