You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
3.9 KiB
215 lines
3.9 KiB
// ApnSerial_NET.cpp: implementation of the CApnSerial_NET class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "apogee.h"
|
|
#include "ApnSerial_NET.h"
|
|
|
|
#include "ApogeeNet.h"
|
|
#include "ApogeeNetErr.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CApnSerial_NET::CApnSerial_NET()
|
|
{
|
|
m_SerialId = -1;
|
|
}
|
|
|
|
CApnSerial_NET::~CApnSerial_NET()
|
|
{
|
|
|
|
}
|
|
|
|
bool CApnSerial_NET::InitPort( unsigned long CamIdA,
|
|
unsigned short CamIdB,
|
|
unsigned short SerialId )
|
|
{
|
|
char Hostname[25];
|
|
BYTE ipAddr[4];
|
|
|
|
|
|
ipAddr[0] = (BYTE)(CamIdA & 0xFF);
|
|
ipAddr[1] = (BYTE)((CamIdA >> 8) & 0xFF);
|
|
ipAddr[2] = (BYTE)((CamIdA >> 16) & 0xFF);
|
|
ipAddr[3] = (BYTE)((CamIdA >> 24) & 0xFF);
|
|
|
|
sprintf( Hostname, "%u.%u.%u.%u", ipAddr[3], ipAddr[2], ipAddr[1], ipAddr[0] );
|
|
|
|
if ( m_SerialId != -1 )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if ( (SerialId != 0) && (SerialId != 1) )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if ( ApnNetStartSockets() != APNET_SUCCESS )
|
|
return false;
|
|
|
|
if ( ApnNetSerialPortOpen( Hostname, CamIdB, SerialId ) != APNET_SUCCESS )
|
|
return false;
|
|
|
|
m_SerialId = SerialId;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::ClosePort()
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
// just close the port and not care whether it was successful. if it was,
|
|
// great. if not, we'll still set m_SerialId to -1 so that another call
|
|
// can at least be tried to connect to the port.
|
|
ApnNetSerialPortClose( m_SerialId );
|
|
|
|
ApnNetStopSockets();
|
|
|
|
m_SerialId = -1;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::GetBaudRate( unsigned long *BaudRate )
|
|
{
|
|
*BaudRate = -1;
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
unsigned long BaudRateRead;
|
|
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
if ( ApnNetSerialReadBaudRate(m_SerialId, &BaudRateRead) != APNET_SUCCESS )
|
|
return false;
|
|
|
|
*BaudRate = BaudRateRead;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::SetBaudRate( unsigned long BaudRate )
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
if ( ApnNetSerialWriteBaudRate(m_SerialId, BaudRate) != APNET_SUCCESS )
|
|
return false;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::GetFlowControl( Apn_SerialFlowControl *FlowControl )
|
|
{
|
|
*FlowControl = Apn_SerialFlowControl_Unknown;
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
bool FlowControlRead;
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
if ( ApnNetSerialReadFlowControl(m_SerialId, &FlowControlRead) != APNET_SUCCESS )
|
|
return false;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::SetFlowControl( Apn_SerialFlowControl FlowControl )
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
if ( ApnNetSerialWriteFlowControl(m_SerialId, FlowControl) != APNET_SUCCESS )
|
|
return false;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::GetParity( Apn_SerialParity *Parity )
|
|
{
|
|
*Parity = Apn_SerialParity_Unknown;
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
ApnNetParity ParityRead;
|
|
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
if ( ApnNetSerialReadParity(m_SerialId, &ParityRead) != APNET_SUCCESS )
|
|
return false;
|
|
|
|
*Parity = (Apn_SerialParity)ParityRead;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::SetParity( Apn_SerialParity Parity )
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
/*
|
|
if ( ApnNetSerialWriteParity(m_SerialId, (ApnNetParity)Parity) != APNET_SUCCESS )
|
|
return false;
|
|
*/
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::Read( char *ReadBuffer, unsigned short *ReadCount )
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
if ( ApnNetSerialRead(m_SerialId, ReadBuffer, ReadCount) != APNET_SUCCESS )
|
|
{
|
|
*ReadCount = 0;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool CApnSerial_NET::Write( char *WriteBuffer, unsigned short WriteCount )
|
|
{
|
|
if ( m_SerialId == -1 )
|
|
return false;
|
|
|
|
if ( ApnNetSerialWrite(m_SerialId, WriteBuffer, WriteCount) != APNET_SUCCESS )
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|