1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| struct ClSerialPortInfo
{
unsigned int SerialIndex;
char ManufacturerName[MAX_PATH];
unsigned int NameBytes;
char port_ID[MAX_PATH];
unsigned int IDBytes;
unsigned int Version;
unsigned int PortState;
};
class __declspec(dllexport) ClSerialPorts
{
private:
void Init();
int ClGetNumPorts(unsigned int *NbPort);
int ClGetPortInfo(unsigned int SerialIndex,ClSerialPortInfo *SerialPortInfo);
unsigned int m_SerialPortNumber; //Max number of serial port
ClSerialPortInfo *m_pSerialPortInfo;
public :
unsigned int GetSerialPortNumber();
ClSerialPortInfo* GetClSerialPortInfo();
ClSerialPorts();
virtual ~ClSerialPorts();
};
ClSerialPorts::ClSerialPorts()
{
Init();
}
void ClSerialPorts::Init()
{
void *SerialRefPtr;
ClGetNumPorts(&m_SerialPortNumber); //je pense que c'est ici où on utilise la première fois la dll.
m_pSerialPortInfo = new ClSerialPortInfo[m_SerialPortNumber];
for (unsigned int i = 0; i < m_SerialPortNumber; i++)
{
ClGetPortInfo(i,&m_pSerialPortInfo[i]);
m_pSerialPortInfo[i].PortState = clSerialInit (m_pSerialPortInfo[i].SerialIndex,&SerialRefPtr);
clSerialClose(SerialRefPtr);
}
}
int ClSerialPorts::ClGetNumPorts(unsigned int *NbPort)
{
int i;
i = clGetNumPorts(NbPort);
return i;
}
int ClSerialPorts::ClGetPortInfo(unsigned int SerialIndex,ClSerialPortInfo *SerialPortInfo)
{
int i;
SerialPortInfo->SerialIndex = SerialIndex;
i = clGetPortInfo(SerialPortInfo->SerialIndex,SerialPortInfo->ManufacturerName,&SerialPortInfo->NameBytes,SerialPortInfo->port_ID,&SerialPortInfo->IDBytes,&SerialPortInfo->Version);
return i;
}
ClSerialPorts::~ClSerialPorts()
{
delete m_pSerialPortInfo;
}
unsigned int ClSerialPorts::GetSerialPortNumber()
{
return m_SerialPortNumber;
}
ClSerialPortInfo* ClSerialPorts::GetClSerialPortInfo()
{
return m_pSerialPortInfo;
} |
Partager