派遣の仕事厳選集

【シリアルポート】に関する知恵袋

【質問】
派遣の仕事厳選集についてだが、派遣の仕事厳選集を見ると、シリアル通信についてR232Cを使ってモーターを制御することを考えています。teratermを用いて動かすことには成功したのですが、C言語のプログラムから動かしたいと考え、以下のようなプログラムを作りましたが動きません。問題点を教えていただけないでしょうか。具体的には、シリアルポートの知恵袋を見ると、書き込み(WriteFile()に失敗しています)ポート、ボーレート、データ、シリアルポートの知恵袋については、パリティなどはこの設定であっています。#include <windows.h>#include <stdio.h>int main( void ){ HANDLE hComm; /* シリアルポートのハンドル */ DCB dcb; /* 通信パラメータ */ char* str="r0,010\¥n"; /* 送信データを格納する */ DWORD writesize; /* ポートへ書き込んだバイト数 */ hComm = CreateFile( "COM2", /* シリアルポートの指定 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード */ 0, /* 共有モード */ NULL, /* セキュリティ属性 */ OPEN_EXISTING, /* 作成フラグ */ FILE_ATTRIBUTE_NORMAL, /* 属性 */ NULL /* テンプレートのハンドル */ ); GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = 9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; SetCommState(hComm, &dcb); /* DCB を設定 */ if(WriteFile(hComm, str, strlen(str), &writesize, NULL) == 0){ printf("Write Error\¥n"); }else{ printf("Write Success\¥n"); } /* シリアルポートに書き込み */ printf("%d / %d have already written \¥n",writesize,strlen(str)); if(CloseHandle(hComm) != 0){ printf("Close Error\¥n"); }else{ printf("Close Success\¥n"); } return(0);}よろしくお願いします。
【解答】
GetLastError()を使って、どんなエラーなのか取得してください。GetLastError()は、呼び出し側のスレッドが持つ最新のエラーコードを取得します。システムエラーコードに対応するエラー文字列を取得するには、FormatMessage 関数を使います。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1011407565
Webサービス by Yahoo! JAPAN

その他関連ワード