TDControl2のcomc.hを読む
公開日:
:
最終更新日:2014/01/31
電脳メガネ
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
bool COMControl::OpenCom(int com,int speed)
{
if(opend){
return false;
}
char Namebuf[256];
DCB dcb;
strcpy(Namebuf,"COM");
sprintf(&Namebuf[3],"%d",com);
hCom = CreateFile(
Namebuf,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if(hCom == INVALID_HANDLE_VALUE){
opend = false;
return false;
}
GetCommState(hCom,&dcb);
dcb.BaudRate = speed;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if(SetCommState(hCom,&dcb) != 0){
opend = true;
return true;
}else{
CloseCom();
opend = false;
return false;
}
}
bool COMControl::SendData(DWORD size,void* data)
{
DWORD WritedSize;
if(WriteFile(hCom,data,size,&WritedSize,NULL) != 0){
return true;
}
return false;
}
bool COMControl::ReadData(DWORD size,void* data)
{
DWORD errors;
COMSTAT comstat;
DWORD bytes;
ClearCommError(hCom,&errors,&comstat);
if(comstat.cbInQue < size){
return false;
}
if(ReadFile(hCom,data,size,&bytes,NULL) != 0){
return true;
}
return false;
}
bool COMControl::CloseCom(void)
{
if(!opend){
return false;
}
opend = false;
if(CloseHandle(hCom) != 0){
return true;
}else{
return false;
}
}
- CreateFile
- WriteFile
- ReadFile
- CloseHandle
は確かWin32APIだったはずなので、ここら辺を
- open
- write
- read
- close
あたりに置き換えてあげれば動作しそう。
TODO
関連記事
- PREV
- g++のコンパイルオプションについて調べる
- NEXT
- Macにportでboostをインストールする