#pragma warning(disable:4231) #pragma warning(disable:4273) #pragma warning(disable:4786)
#include "stdafx.h" #include <string> #include <vector> using namespace std;
#include "SerialPort.h"
#ifdef DLL_EXPORTS #define DLL_API __declspec(dllexport) #define EXPIMP_TEMPLATE #else #define DLL_API __declspec(dllimport) #define EXPIMP_TEMPLATE extern #endif
//电量结构 class dlValue { public: dlValue(){} char time[20];//时间 char meterCode[30];//电表号 char zdl[20];//总电量(千瓦时) char fdl[20];//峰电量(千瓦时) char gdl[20];//谷电量(千瓦时) char jdl[20];//尖电量(千瓦时) char pdl[20];//平电量(千瓦时) public: BOOL operator < (const dlValue &c) const {return TRUE;} BOOL operator == (const dlValue &c) const {return TRUE;} };
//费率设置结构 class setFeeRate { public: setFeeRate(){} char mark[3];//费率标志 01---代表峰, 02---代表谷,03---代表尖, 04---代表平. char time[20];//时间 hh:mm:ss-hh:mm:ss (开始时间-结束时间) public: BOOL operator < (const setFeeRate &c) const {return TRUE;} BOOL operator == (const setFeeRate &c) const {return TRUE;} };
//--输入参数ca: struct commArg { char port[10];//端口号 例如:1 2等 char baudRate[10];//波特率 例如:9600 2400等 char telCode[30];//电话号码 例如 02423974200 等 char ip[25];//ip:port 例如:192.168.1.1:8080 } ;
//--输出参数rtn: struct centerParam { char meterNum[5];// 电表个数 char centerTime[20];// 集中器当前时间 yyyy-mm-dd hh:mm:ss char freezeIt[20];// 冻结时间 dd hh:mm:ss(dd为日期,hh为小时,mm为分钟,ss为秒) } ;
//显示实例化模板类 EXPIMP_TEMPLATE template class DLL_API std::vector<string>; EXPIMP_TEMPLATE template class DLL_API std::vector<dlValue>; EXPIMP_TEMPLATE template class DLL_API std::vector<setFeeRate>;
typedef std::vector<string> pchVct; typedef std::vector<dlValue> structVctDL; typedef std::vector<setFeeRate> structVctFeeRate;
class AFX_EXT_CLASS FUGEN //导出类 { public: FUGEN(); ~FUGEN(); //////////////////////////////////////////////////////////////////辅助函数 private:
//1获得记录个数 int GetCounts();
//2确认端口 BOOL ConfigureComPort();
//3在库中查询表号,存在返回序号; 并将所有表号存入m_allCode; int SearchAndGet(char * meterCode); //////////////////////////////////////////////////////////////////功能函数 public:
//1连接 int connect (struct commArg* ca);
//2断开 int close (char* com);
//3抄表号(某一个集中器所包含的集抄电表的表号) int meterCode (pchVct* rtn, char* jzq);
//4点名实时抄表(集中器上的某一个电表的读数) int realTimeMeter (dlValue* rtn,char* jzq,char* meterCode);
//5连续抄表(连续抄出当时或与当时最近的冻结电量) int continueMeter (structVctDL* rtn,char* jzq, pchVct* metercodeset);
//6每月上报日电量(每月给电力营销系统的上报电量) int freezeValue (structVctDL* rtn,char* jzq, pchVct* metercodeset);
//7抄集中器基本参数(电表个数、集中器时间、上报日等基本参数) int centerArg (struct centerParam* rtn,char* jzq);
//8广播校时 int publicTime (char* jzq);
//9设置每月上报日 int freezeTime (char* jzq,char* freezeIt);
//10时段费率设置(峰、谷、尖、平四个时段的设置) int feeRate (char* jzq, structVctFeeRate* argFeeRate);
//11增加表号 int addMeterCode (char* jzq,char* meterNum);
//12修改表号 int modifyMeterCode (char* jzq, char* oldNum, char* newNum);
//13删除表号 int delMeterCode (char* jzq, char* meterNum);
private: CSerialPort* m_pComm;//端口 pchVct m_allCode; int retW; int retR; int commandLen; char command[256]; char respond[256]; };
// SerialPort.h: interface for the CSerialPort class. // ////////////////////////////////////////////////////////////////////// #ifndef _MY_SERIAL_PORT_H_ #define _MY_SERIAL_PORT_H_
class AFX_EXT_CLASS CSerialPort { public: CSerialPort(); virtual ~CSerialPort();
public: BOOL OpenPort(TCHAR* strPort, int nBaud); VOID ClosePort(); int InBufferCount(VOID); DWORD ReadBytes(PBYTE buffer, DWORD dwByteRead); DWORD WriteBytes(const char * buffer, DWORD dwByteWrite); public: BOOL m_bOpened; HANDLE m_hCommDev; //设备控制块结构 };
#endif //_MY_SERIAL_PORT_H_

|