⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gprsdll.h

📁 使用VC编写的GPRS通讯代码,可用于GPRS MODEM收发数据
💻 H
字号:
// gprsdll.h : main header file for the GPRSDLL DLL
//

#if !defined(AFX_GPRSDLL_H__BED4558D_76A5_4E59_8469_939BB4F52841__INCLUDED_)
#define AFX_GPRSDLL_H__BED4558D_76A5_4E59_8469_939BB4F52841__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"		// main symbols

/////////////////////////////////////////////////////////////////////////////
// CGprsdllApp
// See gprsdll.cpp for the implementation of this class
//

class CGprsdllApp : public CWinApp
{
public:
	CGprsdllApp();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CGprsdllApp)
	//}}AFX_VIRTUAL

	//{{AFX_MSG(CGprsdllApp)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


//数据结构:
//1.用以区分标识各台Modem的数据结构:
typedef UINT u32t;
typedef UCHAR u8t;
typedef USHORT u16t;
typedef ULONG	u64t; 

typedef struct _modem_info_t_
{
	u32t	m_modemId;   	  //Modem模块的ID号
	u8t		m_phoneno[12];	  //Modem的11位电话号码,必须以'\0'字符结尾
	u64t	m_conn_time; 	  //Modem模块最后一次建立TCP连接的时间
	u64t	m_refresh_time;    //Modem模块最后一次收发数据的时间
} ModemInfoStruct;

#define MAX_RECEIVE_BUF 1450
typedef struct _modem_data_t {
	   u32t       m_modemId;		     	// Modem模块的ID号
	   u64t       m_recv_time;				//接收到数据包的时间
	   u8t        m_data_buf[MAX_RECEIVE_BUF+1];//存储接收到的数据
	   u16t     m_data_len;				//接收到的数据包长度
	   u8t      m_data_type;	          	//接收到的数据包类型,
											//	0x01:用户数据包 
											//	0	: 不认识类型
}ModemDataStruct;

//2.Api说明:
extern "C" { 
//1).
 BOOL _stdcall DSStartService(u16t uiListenPort);
//功能:启动服务器的数据服务
//参数: u16ListenPort:服务的侦听端口
//说明:启动服务器的数据服务。启动数据服务后,服务器侦听在指定端口。
//如果失败了,可以调用DSGetLastError()函数查看错误原因。

//2).
 BOOL _stdcall DSStopService(void);
//功能:停止服务器的数据服务
//参数:无
//说明:停止服务器的数据服务。所有的Modem都将下线。
//		如果失败了,可以调用DSGetLastError()函数查看错误原因。

//3).
 BOOL _stdcall DSGetNextData(ModemDataStruct* pDataStruct,u16t waitseconds);
//功能:读取下一条Modem送上来的信息
//参数:pDataStruct: 存放Modem所送上来的信息和数据的结构,读函数执行成功后,返回的数据存放到该参数指向的结构中
//	waitseconds:本函数读到数据后立即返回;如果没有数据到达,则等待最长waitseconds(时间单位:秒)的时间,直到有数据到达,取值范围从0~65535,如果取值为0表明本函数将立即返回。
//返回:如果返回为非零值,表明收到了一条Modem信息。如果返回为0,则表明没有收到数据。

//4).
 BOOL _stdcall DSSendData(u32t modemId,u16t len,u8t * buf);
//功能:向指定ID号的的Modem发送数据
//参数:modemId:modem的ID号,用以标识一个Modem
//	len:待发送的数据长度(字节数),数据长度必须小于或等于1450个字节
//	buf:待发送的数据
//如果失败了,可以调用DSGetLastError()函数查看错误原因。

//5).
 u32t _stdcall DSGetModemCount(void);
//功能:取得当前在线的所有的Modem的总数;

//	6).
 BOOL _stdcall DSGetModemByPosition(u32t pos, ModemInfoStruct *pModemInfo);
//	功能:取得指定位置的Modem的数据;
//	参数:pos:Modem列表中的位置信息,0代表第一个Modem位置;
//		pModemInfo:指向用以保存Modem信息的数据结构;
 void _stdcall DSGetLastError(char *str,int nMaxBufSize);
//功能:获得先前API执行时发生的错误;
//	参数:	str:用来存放错误信息的缓冲区;
//			nMaxStrSize:缓冲区的最大长度,如果错误信息的大小超过了这个值,则此函数将把错误信息的尾部截除。
}
/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_GPRSDLL_H__BED4558D_76A5_4E59_8469_939BB4F52841__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -