#include "windows.h" #include "stdio.h" #include "stdlib.h" //RS232C 制御用 #define ASCII_BEL 0x07 #define ASCII_BS 0x08 #define ASCII_LF 0x0A #define ASCII_CR 0x0D #define ASCII_XON 0x11 #define ASCII_XOFF 0x13 void submit(const char *send) { HANDLE hCom; //RS232C制御用 RS232C の初期化 hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCom == INVALID_HANDLE_VALUE) { return; } DCB dcb; BOOL fRetVal ; BYTE bSet ; dcb.DCBlength = sizeof(DCB) ; GetCommState(hCom, &dcb) ; dcb.BaudRate = 57600; // 通信速度 dcb.ByteSize = 8; // データ長 dcb.Parity = NOPARITY; // パリティビット:EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY dcb.StopBits = ONESTOPBIT; // ストップビット:ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS bSet = 0; dcb.fOutxDsrFlow = bSet ; if (bSet) { dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ; } else { dcb.fDtrControl = DTR_CONTROL_ENABLE ; } bSet = 0; dcb.fInX = dcb.fOutX = bSet ; dcb.XonChar = ASCII_XON ; dcb.XoffChar = ASCII_XOFF ; dcb.XonLim = 100 ; dcb.XoffLim = 100 ; dcb.fBinary = FALSE ; dcb.fParity = FALSE ; //ハードウェアフロー制御 dcb.fOutxCtsFlow = FALSE; //  CTSハードウェアフロー制御:CTS制御を使用しない場合はFLASEを指定 //       CTS 制御をする場合はTRUEを指定してCTS信号を監視します。 dcb.fOutxDsrFlow = FALSE; // DSRハードウェアフロー制御:使用しない場合はFALSEを指定 // ソフトウェアフロー制御 dcb.fOutX = FALSE; // 送信時XON/OFF制御の有無: なし→FLALSE dcb.fInX = FALSE; // 受信時XON/XOFF制御の有無:なし→FALSE SetCommState(hCom, &dcb); //RS232Cの初期化ここまで int i,j; unsigned long len; int num; // 送信用 //char send[32]; //printf("データを入力してください"); //scanf("%c" , send); num = atoi(send); //printf("atoi:%d ",num); int send_length; send_length=sizeof(send); //printf("send length:%d\n",send_length); //受信用 unsigned char resv[32]; int resv_length; unsigned char buff; //for(j=0;j<5;j++) for(j=0;j<1;j++){ switch(j){ //case 0:// sprintf(send,"\x88\x30\x01\xff"); send_length=4; break; //アドレス設定 //case 1: //sprintf(send,"\x88\x01\x00\x01\xff"); send_length=5; break; //インタフェイスクリア //case 2: //sprintf(send,"\x81\x01\x06\x04\xff"); send_length=5; break; //ホーム //case 3: //sprintf(send,"\x81\x01\x06\x01\x10\x10\x03\x01\xff"); send_length=9; break; //上向く //case 4: //sprintf(send,"\x81\x01\x06\x04\xff"); send_length=5; break; //ホーム } //Sleep(1500); //printf("%d 回目:",j+1); //for(i=0;i<32;i++){ //ReadFile(hCom,&buff,1,&len,NULL); //1つずつ受信 //resv[i]=buff; //printf("%02x ",buff); //if(buff==0xff){//ACK の次は Completion // if(resv[0]==0x90 && resv[1]==0x41) i=0; // else i=32; //} send_length=1; WriteFile(hCom,send,send_length,&len,NULL); //書き込み //printf("send_length:%d ",send_length); //printf("len:%d ",len); //printf("out:%d ",num); //ReadFile(hCom,&buff,1,&len,NULL); //1つずつ受信 //resv[i]=buff; //printf("%02x",buff); //if(buff==0xff){//ACK の次は Completion // if(resv[0]==0x90 && resv[1]==0x41) i=0; // else i=32; //} printf("\n"); } /*if(buff == 67) return 'g'; else if (buff == 70) return 'p'; else return 't';*/ //後処理 CloseHandle(hCom); //return 4; }