Below I have pasted my C serial port code .
Iam getting error
Code:
Cannot open Communication Port. error no.2
error no.2 specifies that system cannot find the file specified.
Does anyone have suggestion
Code:
#include "stdafx.h"
#include<windows.h>
#include<winbase.h>
#include <conio.h>
HANDLE hComm;
BOOL m_bPortReady;
DCB m_dcb;
COMMTIMEOUTS m_CommTimeouts;
DWORD iBytesWritten;
int gle;
BOOL ConfigurePort(DWORD BaudRate, BYTE ByteSize, DWORD fParity, BYTE Parity, BYTE StopBits)
{
if((m_bPortReady = GetCommState(hComm, &m_dcb))==0)
{
printf("GetCommState Error");getch();
CloseHandle(hComm);
return false;
}
m_dcb.BaudRate =BaudRate;
m_dcb.ByteSize = ByteSize;
m_dcb.Parity =Parity ;
m_dcb.StopBits =StopBits;
m_dcb.fBinary=TRUE;
//m_dcb.fDsrSensitivity=false;
m_dcb.fParity=fParity;
// m_dcb.fOutX=false;
// m_dcb.fInX=false;
// m_dcb.fNull=false;
// m_dcb.fAbortOnError=FALSE;
// m_dcb.fOutxCtsFlow=FALSE;
// m_dcb.fOutxDsrFlow=false;
//m_dcb.fDtrControl=DTR_CONTROL_DISABLE;
//m_dcb.fDsrSensitivity=false;
//m_dcb.fRtsControl=RTS_CONTROL_DISABLE;
//m_dcb.fOutxCtsFlow=false;
//m_dcb.fOutxCtsFlow=false;
m_bPortReady = SetCommState(hComm, &m_dcb);
if(m_bPortReady ==0)
{
printf("SetCommState Error");getch();
CloseHandle(hComm);
return false;
}
return true;
}
BOOL SetCommunicationTimeouts(DWORD ReadIntervalTimeout, DWORD ReadTotalTimeoutMultiplier, DWORD ReadTotalTimeoutConstant, DWORD WriteTotalTimeoutMultiplier, DWORD WriteTotalTimeoutConstant)
{
if((m_bPortReady = GetCommTimeouts (hComm, &m_CommTimeouts))==0)
return false;
m_CommTimeouts.ReadIntervalTimeout =ReadIntervalTimeout;
m_CommTimeouts.ReadTotalTimeoutConstant =ReadTotalTimeoutConstant;
m_CommTimeouts.ReadTotalTimeoutMultiplier =ReadTotalTimeoutMultiplier;
m_CommTimeouts.WriteTotalTimeoutConstant = WriteTotalTimeoutConstant;
m_CommTimeouts.WriteTotalTimeoutMultiplier =WriteTotalTimeoutMultiplier;
m_bPortReady = SetCommTimeouts (hComm, &m_CommTimeouts);
if(m_bPortReady ==0){
printf("StCommTimeouts function failed");getch();
CloseHandle(hComm);
return false;}
return true;
}
BOOL WriteByte(char* bybyte)
{
iBytesWritten=0;
if(WriteFile(hComm,bybyte,1,&iBytesWritten,NULL)==0)
return false;
else
return true;
}
BOOL ReadByte(char *resp)
{
char rx;
resp = 0;
DWORD dwBytesTransferred=0;
if(ReadFile (hComm, &rx, 1, &dwBytesTransferred, 0))
{
if (dwBytesTransferred == 1)
{
resp=℞
return true;
}
return false;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
hComm = CreateFile((LPCWSTR)"COM1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);
if(hComm==INVALID_HANDLE_VALUE)
{
printf("Cannot open Communication Port..");
gle = GetLastError();
printf("error no.%d\n", gle);
getch();
return false;
}
DWORD data=0;
unsigned char a[2], b[1],buffer[10],sendb[14], *vptr;
char *ptr;
char err[4];
int slen;
char rx = 0;
char x[1];
char bw;
/*short int crcv;//unsigned char* ptr;
unsigned char buff[10] = {0x1b,0x81,0x00,0x80,0x00,0x80,0x40,0x00,0x00,0x1};
unsigned char buff[10] = {0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30};
crcv = Calc_CCITT_CRC(buff, 10);
ptr = (char*)&crcv;
sprintf(a, "%c%c", *ptr, *(ptr+1));
sprintf(b, "%c", 0x7e);
memcpy(buffer, buff, 10);
sendb[0] = (char)0x7e;
for(int j = 1; j < 11; j++)
sendb[j] = buff[j-1];
//free(buff);
sendb[11] = (char)*ptr;
sendb[12] = (char)*(ptr+1);
sendb[13] = (char) 0x7e;int gle;
*a = (unsigned char)0x30; //*(a+1) = (unsigned char)0x32;
sprintf(sendb, "%s%s%s%s", b, buff, a, b);
CString dsend = CString(b)+ CString(buff) + CString(a) + CString(b);*/
char dsend = char(a);//sendb);
b[0] = 0x31;
vptr = (unsigned char*)&b;
if(!ConfigurePort(9600, 8, 0, NOPARITY, ONESTOPBIT))
{
printf("Cannot Configure Communication Port");
getch();
CloseHandle(hComm);
}
else
{
if(!SetCommunicationTimeouts(1000,1000,1000,1000,1000))
{
printf("Cannot Configure Communication Timeouts");
getch();
CloseHandle(hComm);
}
else
{
if(!WriteByte(&dsend))
{
printf("Cannot Write to Port");
int gle = GetLastError();
sprintf(err, "%x", gle);
getch();
CloseHandle(hComm);
}
else
{
sprintf(x, "%x",dsend);
printf("Success%c",x);
if(!ReadByte(&bw))
printf("Timeout on getting Response.Please ensure that\nyou have connected the loop back plug to com1.");
else
{
memset(x, 0, 1);
printf("Successfully Read from Com1");
sprintf(x,"%x", bw);
printf("Read Byte %c",x);
getch();
CloseHandle(hComm);
}
}
}
}
}
