C言語でのRS232Cとの通信
今後,電動ステージをRS232Cを持つコントローラとVisual studio2008で動かすことになったのですが,
プログラム初心者のため,動かし方がわかりません.
一応,いくつかのサイトで調べた方法を試したのですが,動かすことができませんでした.
下に現在のプログラムソースを張ってあります.
また,コントローラの諸元は,
ボーレート:9600
データ長:8ビット
ストップビット:1ビット
パリティ:なし
です.
皆さんのアドバイスを頂けたら,幸いです.
また,このような質問は初めてなので,どういった情報がわかれば尚良いかを教えて頂けると幸いです.
[プログラムソース]
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#define CR 0x0d
#define LF 0x0a
HANDLE hCom;
void init(char *com, int baudrate);
void m_move(double pos);
int main()
{
double pos;
init("COM1", 9600);
printf("移動量 = ");scanf("%lf", &pos);
m_move(pos);
CloseHandle(hCom);
}
void init(char *com, int baudrate)
{
DCB dcb;
hCom = CreateFile("COM1",
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
GetCommState(hCom, &dcb);
dcb.BaudRate = baudrate;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb);
}
void m_move(double pos)
{
int Send_Res, SendLen;
char Send_Buf[4000];
char cmd[256];
DWORD wbyte;
sprintf(cmd, "LMA ,,%.2lf", pos); //LMA はステージを動かすコマンド
printf("%s", cmd);
strcpy(Send_Buf, cmd);
SendLen = strlen(Send_Buf);
Send_Buf[SendLen] = CR;
Send_Buf[SendLen + 1] = LF;
Send_Res = WriteFile(hCom, Send_Buf, SendLen+2, &wbyte, NULL);
fflush(stdout);
Sleep(100);
}