作业帮 > 综合 > 作业

GPS通信协议问题公司要求现在写一个GPS的通信协议,要求有包头包尾之类的,我没写过,我之前写过做过工控,写过串口通信协

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 20:01:22
GPS通信协议问题
公司要求现在写一个GPS的通信协议,要求有包头包尾之类的,我没写过,我之前写过做过工控,写过串口通信协议,感觉那个似乎比较简单,GPS的牵扯太多,有没有大神愿意指教?
//////////////////////////////////////////////////////////////////////////
// GpsContor.h: interface for the CGpsContor class.
//////////////////////////////////////////////////////////////////////////
#if !defined _GPSCONTOR_H_
#define _GPSCONTOR_H_
#include "GpsDevice.h"
class CGpsControl
{
public:
CGpsControl();
~CGpsControl();

GPS_POSITION* GetAllData();
GPSData* GetUnFiltedData();

void SetMessageWnd( HWND hWnd );
BOOL Config(int nComID/*串口号*/,
int nBaudRate/*波特率*/,
int nByteSize/*字节大小*/);
BOOL PowerReset();
BOOL Create();
void Destroy();
void SetNewHandle(HANDLE hNewHandle);
private:
HWND m_hWnd;
BOOL m_bCreate;
DWORD m_hThreadId;
HANDLE m_hThread;
CGpsDevice m_gpsDevice;
};
#endif
//////////////////////////////////////////////////////////////////////////
// FileName: Gpsapi.h
//////////////////////////////////////////////////////////////////////////
#pragma once
#ifdef GPSAPI_EXPORTS
#define GPSAPI_API __declspec(dllexport)
#else
#define GPSAPI_API __declspec(dllimport)
#endif
#define GPS_MAX_SATELLITES 12 //最大可见卫星数
#define GPS_MAX_FRIENDLY_NAME 64 //保留
#define GPS_MAX_PREFIX_NAME 16 //保留
#pragma pack(push, 1)
//定位质量
typedef enum {
GPS_FIX_QUALITY_UNKNOWN = 0,
GPS_FIX_QUALITY_GPS,
GPS_FIX_QUALITY_DGPS
} GPS_FIX_QUALITY;
//定位类型
typedef enum {
GPS_FIX_UNKNOWN = 0,
GPS_FIX_2D,
GPS_FIX_3D
} GPS_FIX_TYPE;
//定位选择
typedef enum {
GPS_FIX_SELECTION_UNKNOWN = 0,
GPS_FIX_SELECTION_AUTO,
GPS_FIX_SELECTION_MANUAL
} GPS_FIX_SELECTION;
//设备驱动信息(保留未用)
typedef struct _GPS_DEVICE {
DWORD dwVersion;
DWORD dwSize;
DWORD dwServiceState;
DWORD dwDeviceState;
FILETIME ftLastDataReceived;
WCHAR szGPSDriverPrefix[GPS_MAX_PREFIX_NAME];
WCHAR szGPSMultiplexPrefix[GPS_MAX_PREFIX_NAME];
WCHAR szGPSFriendlyName[GPS_MAX_FRIENDLY_NAME];
} *PGPS_DEVICE, GPS_DEVICE;
typedef struct _GPS_POSITION {
DWORD dwVersion; // 版本号(默认0)
DWORD dwSize; // 默认0
DWORD dwValidFields; // 默认0
DWORD dwFlags; // 默认0
SYSTEMTIME stUTCTime; // 卫星时间(UTC时间)
double dblLatitude; // 纬度
double dblLongitude; // 经度
float flSpeed; // 速度
float flHeading; // 方向
double dblMagneticVariation; // 默认0
float flAltitudeWRTSeaLevel; // 海拔高度
float flAltitudeWRTEllipsoid; // 默认0
GPS_FIX_QUALITY FixQuality; // 定位质量
GPS_FIX_TYPE FixType; // 定位类型
GPS_FIX_SELECTION SelectionType; // 选择类型
float flPositionDilutionOfPrecision; // 位置经度因子
float flHorizontalDilutionOfPrecision; // 水平经度因子
float flVerticalDilutionOfPrecision; // 垂直经度因子
DWORD dwSatelliteCount; // 定位卫星数
DWORD rgdwSatellitesUsedPRNs[GPS_MAX_SATELLITES]; // 保留
DWORD dwSatellitesInView; // 可见卫星数
DWORD rgdwSatellitesInViewPRNs[GPS_MAX_SATELLITES]; // 卫星编号
DWORD rgdwSatellitesInViewElevation[GPS_MAX_SATELLITES]; //卫星仰角
DWORD rgdwSatellitesInViewAzimuth[GPS_MAX_SATELLITES]; // 卫星方位角
DWORD rgdwSatellitesInViewSignalToNoiseRatio[GPS_MAX_SATELLITES]; //卫星信噪比
} GPS_POSITION, *PGPS_POSITION;
#pragma pack(pop)
/**
* 函数:打开GPS(此处把要打开连接的虚串口号,波特率等写在程序里, 当前函数的其中三个参数都作为保留参数以兼容mobile标准接口)
* @param [HANDLE] hNewLocationData 信号量句柄(NULL或通过CreateEvent创建的信号量, 如果不为NULL时, 当有GPS新数据时,则使此新号量有值)
* @param [HANDLE] hDeviceStateChange 保留参数(NULL)
* @param [WCHAR] *szDeviceName 保留参数(NULL)
* @param [DWORD] dwFlags 保留参数(0)
* @return HANDLE
*/
GPSAPI_API HANDLE GPSOpenDevice(HANDLE hNewLocationData,HANDLE hDeviceStateChange, const WCHAR* szDeviceName,DWORD dwFlags);
/**
* 函数:关闭GPS
* @param [HANDLE] hGpsHandle GPS设备句柄
* @return DWORD
*/
GPSAPI_API DWORD GPSCloseDevice(HANDLE hGPSDevice);
/**
* 函数: 取得数据信息
* @param [HANDLE] hGPSDevice GPS设备句柄
* @param [GPS_POSITION] pGPSPosition 数据信息结构指针
* @param [DOWRD] dwMaximumAge 保留参数
* @param [DWORD] dwFlags 保留参数
* @return DWORD
*/
GPSAPI_API DWORD GPSGetPosition(HANDLE hGPSDevice,GPS_POSITION *pGPSPosition,DWORD dwMaximumAge,DWORD dwFlags);
/**保留接口函数
* 函数: 获得设备状态信息
* @param [GPS_DEVICE] *pGPSDevice 设备驱动状态结构指针
* @return DWORD
*/
GPSAPI_API DWORD GPSGetDeviceState(GPS_DEVICE *pGPSDevice);
/**针对现有的硬件缺陷增加的手动复位接口
* 函数: 复位
* @param [HANDLE] hGPSDevice GPS设备句柄
* @return DWORD
*/
GPSAPI_API BOOL GPSResetDevice(HANDLE hGPSDevice);
%%来自于网络,尊重版权、、
GPS通信协议问题公司要求现在写一个GPS的通信协议,要求有包头包尾之类的,我没写过,我之前写过做过工控,写过串口通信协 GPS测量与全站仪最近写一篇作业,主题本来是介绍全站仪的,但是老师要求加入一些有关GPS测量的东西.我从来没接触过,不知 我是一家面包店的店长,公司叫写年终总结,我没写过,请问怎么写 我写过串口编程 RS-232 读和写,然后 我现在想写 RS-485 的读和写,RS-232和RS-485有什么区别?, 一个小小的化学问题不知道有没有人和我有过相同的疑惑,就是,写化学试卷的时候常常被要求写化学反应方程式,有些是从没遇到过的 国企如何查四六级证书我今年进了一家大型国企,要求过四六级,可我没考过,我在简历上写我过了四级,报到的时候要求出示四级证书 年终了,在我们公司的保安要求我们公司给他们保安总公司写一封感谢信,领导把这个工作交给我,我没写过啊,急.(写好了, 语文作文说联系实际是指必须写自己经历过的事吗?我写了一个听过的故事,符合要求吗? 《我如何过新年》写一篇英语作文,要求语句通顺,没有错词,急. 求我和我的祖国征文,要自己写的,没发表过的,对不起要求太多,但不用字数太多,随便写几行都行, 雷锋日记续写要求:写做过的好事 还有体会. 英语翻译我们的英语翻译课要求写一篇关于翻译的心得体会,而且要求是用英文写的,以前我从来没写过的,不懂得怎么写,恳请大家给