📄 scapi.h
字号:
{
struct
{
/**
* 设备名
*/
ScWChar sDeviceName[SC_OP_DEVICENAME_MAXSIZE]; // FOR SC_SOCKET_COMM
/**
* widcom蓝牙的scn码
*/
ScUChar scn;
ScUChar pad[3];//崔宏威增加了一处对齐的问题
union
{
/**
* 蓝牙地址
*/
ScInt address[2];
ScUChar address2[8];
};
}SocketParam; ///< socket参数
// FOR SC_SERIAL_COMM
struct
{
ScInt nPort; ///< 端口
ScInt nBaudrate; ///< 波特率
ScInt nStopbit; ///< 停止位
ScInt nOddEven; ///< 奇偶校验
}COMParam; ///< 串口参数
};
} ScGpsParams;
#define SCAN_STATUS_OPEN_SUC 0x0001 ///< 打开成功
#define SCAN_STATUS_OPEN_FAILED 0x0002 ///< 打开失败
#define SCAN_STATUS_GPS_FOUND 0x0003 ///< 发现GPS
/** \brief 串口扫描状态
*/
typedef struct tagCOMScanStatus
{
ScInt Port; ///< 串口号
ScInt BaudRate; ///< 波特率
ScInt Status; ///< 状态
}COMSCANSTATUS;
/** \brief 启动GPS模块
*
* 根据参数启动GPS模块
*
* @param pParams GPS参数
* @return -1 失败\n
* 0 成功
*/
SC_API long ScModuleGpsOpen(ScGpsParams * pParams = NULL) ;
/** \brief 关闭GPS模块
*
* 关闭GPS模块
*
*/
SC_API long ScModuleGpsClose() ;
/** \brief 获得GPS状态
*
* 获得GPS状态态
*
* \param SGpsInfo GPS状态信息
* \return
*/
SC_API long ScGetGpsStatusInfo(ScGPSStatusInfo *SGpsInfo) ;
/** \brief 扫描串口
*
* 扫描串口, 适合于pc。
*
* \param BaudRate 串口波特率
* \return
*/
SC_API long ScScanCOM(ScInt BaudRate = 9600);
/** \brief 获得串口扫描状态
*
* 获得串口扫描状态,返回值为已经扫描的串口个数,最大为32
*
* \param pCOMScanStatus 串口扫描状态数组指针
* \param byteSize 为pCOMScanStatus缓冲区的大小,至少要有sizeof(COMSCANSTATUS)*32
* \return 如果数组数量少于32,返回0 否则返回串口扫描状态
*/
SC_API long ScGetScanStatus(COMSCANSTATUS* pCOMScanStatus, ScInt byteSize);
/** \brief 停止扫描串口
* 停止扫描串口
*/
SC_API long ScStopScan();
/** \brief 全自动搜索
*
* 全自动搜索, 包括串口和蓝牙,适合于ppc,连接gps设备
*
* \param BaudRate 波特率
* \return
*/
SC_API long ScAutoFindGPS(ScInt BaudRate = 9600);
/** 获得自动扫描状态
*
* 获得自动扫描状态,包括串口和蓝牙,由于是同时搜索,所以顺序不保证
*
* 调用此函数的方法:
* ScGpsParams GPSParams[40];//至少需要有40个元素的大小(32 个串口+8个蓝牙)
* memset(&GPSParam, 0, sizeof(ScGpsParams)*40);
* ScGetAutoFindStatus(GPSParams, sizeof(ScGpsParams)*40);
* 由于是动态扫描,所以此函数需要时时调用,才能获得最新的扫描状态
* 自动扫描到gps后,会自动连接
*
* \param pGPSParam 全自动扫描的gps设备状态
* \param byteSize pGPSParam缓存区的大小
* \return
*/
SC_API long ScGetAutoFindStatus(ScGpsParams* pGPSParam, ScInt byteSize);
/** \brief 设置串口参数
*
* 设置串口参数
* 对ScUpdateOption进行封装,以便gps模块接口的完整性
*
* \param Port 端口号
* \param BaudRate 波特率
* \return
*/
SC_API long ScSetCOMParam(ScInt Port, ScInt BaudRate);
/** \brief 获取串口参数
*
* 获取串口参数
*
* \param Port 端口号
* \param BaudRate 波特率
* \return
*/
SC_API long ScGetCOMParam(ScInt* Port, ScInt* BaudRate);
//------------------------------------------------------------
// ScGlobals相关API
//------------------------------------------------------------
/** \brief 消息信息定义
*
* 消息信息定义
*/
class ScMsgInfo
{
public:
/** \brief 消息序号
*/
ScInt m_msgid;
/** \brief 消息名
*/
const char *m_msgname;
};
class ScGlobals;
/** \brief 获取ScGlobals对象指针
*
* 和GetSc()功能一样,供外部程序调试使用。
* 在sc内部只能使用GetSc()而不能使用ScGetSc()。
*
* @return ScGlobals对象指针
*/
SC_API ScGlobals *ScGetSc();
/** \brief 获取消息信息列表
*
* 获得消息列表,供调试用
*
* \return 消息列表指针
*/
SC_API const ScMsgInfo *ScGetMsgInfo();
/** \brief 按照消息序号取得消息
*
* 按照消息序号取得消息
*
* @param msgid 消息id
* @return 消息指针
*/
const ScMsgInfo* ScGetMsgInfo(ScInt msgid );
/** \brief 设定Log窗口
*
* 设定Log窗口,供调试用
*
* \param wnd 窗口指针
*/
SC_API void ScSetDebugWnd(ScDebugWnd *wnd);
//------------------------------------------------------------
// 路径计算API
//------------------------------------------------------------
/** \brief 添加航程点
* 添加航程点 (异步)
* <p>
* @param index 0:起点 ; 99:终点; 1-98: 途径点
* @param pt 点坐标 其中pt.x 经度 ,pt.y纬度
* @return true 成功, false 失败
*/
SC_API ScBool ScAddWayPoint(ScInt index , const ScLogPoint &pt);
/** \brief 清除航程点
*
* 清除航程点 (异步)
* <p>
* @param index 0:起点 ; 99:终点; 1-98: 途径点
* @return true 成功, false 失败
*/
SC_API ScBool ScRemoveWayPoint(ScInt index);
/** \brief 清除所有航程点
*
* 清除所有航程点
*
* \return 成功返回TRUE, 否则返回FALSE
*/
SC_API ScBool ScRemoveAllWayPoint();
/** \brief 执行路径计算(异步)
*
* 执行路径计算(异步)
* <p>
* @return true 成功, false 失败。当前总为true.
*/
SC_API ScBool ScRouteCalc();
/** \brief 清除路径(异步)
*
* 清除路径(异步)
* <p>
* @return true 成功, false 失败。当前总为true.
*/
SC_API ScBool ScRouteClear();
//------------------------------------------------------------
// 路径引导API
//------------------------------------------------------------
/** \brief 启动模拟引导
*
* \return
*/
SC_API ScBool ScStartSimNav();
/** \brief 停止模拟引导
*
* \return
*/
SC_API ScBool ScStopSimNav();
/** \brief 启动真实引导
*
* \return
*/
SC_API ScBool ScStartRealNav();
/** \brief 停止真实引导
*
* \return
*/
SC_API ScBool ScStopRealNav();
/** \brief 取路径规划结果
*
* @param plCount 结果项个数
* @param ppRIs 结果项指针
* @return true 成功, false 失败
*/
SC_API ScBool ScGetRouteResult(ScLong* plCount, ScRouteItem **ppRIs);
/**
* 字段选项
* 某位为1时,对应字段才有效。
* 查询和更新操作同时适用
* 可组合使用
*/
enum {
SC_OP_MASK_COMMON = 0x00100000, ///< 通用设置掩码
SC_OP_MASK_RC = 0x00200000, ///< 路径计算设置掩码
SC_OP_MASK_RG = 0x00400000, ///< 路径引导设置掩码
SC_OP_MASK_GLOBAL = 0x00800000, ///< 全局选项,退出后不保存
SC_OP_MASK_GPS = 0x01000000, ///< gps设置掩码
SC_OP_NONE = 0x00, ///< 无任何字段
SC_OP_SIMSPEED = SC_OP_MASK_COMMON | 0x01, ///< 模拟引导速度
SC_OP_RCWAY = SC_OP_MASK_COMMON | 0x02, ///< 路径计算策略
SC_OP_RRCWAY = SC_OP_MASK_RG | 0x04, ///< 路径重计算方式
SC_OP_VOICEFREQ = SC_OP_MASK_RG | 0x08, ///< 语音播报频度
SC_OP_VOICEVOLUME = SC_OP_MASK_COMMON | 0x10, ///< 语音播报音量
SC_OP_DAYMODE = SC_OP_MASK_COMMON | 0x20, ///< 白天黑夜模式
SC_OP_TURNBYTURN = SC_OP_MASK_COMMON | 0x40, ///< turnbyturn模式还是地图模式
SC_OP_SEARCHRANGE = SC_OP_MASK_COMMON | 0x80, ///< 周边搜索范围
SC_OP_NORTHUP = SC_OP_MASK_COMMON | 0x100, ///< 地理北向朝上还是车头朝上
SC_OP_WAYDISTANCE = SC_OP_MASK_RG | 0x200, ///< 偏航距离,m
SC_OP_AUTOLOCATE = SC_OP_MASK_GLOBAL | 0x400, ///< 引导或运动时自动跟踪
SC_OP_SCREENORIENT= SC_OP_MASK_COMMON | 0x800,
SC_OP_PORT = SC_OP_MASK_GPS | 0x01, ///< GPS串口号
SC_OP_BAUDRATE = SC_OP_MASK_GPS | 0x02, ///< GPS波特率
SC_OP_RT = SC_OP_MASK_GPS | 0x04, ///< 是否记录轨迹
SC_OP_ALL = 0xffffffff, ///< 全部字段都有效
};
/** \brief 用于AP的选项,简化版
*/
class ScOption
{
public:
ScOption(){ flags = SC_OP_NONE; }
virtual ~ScOption(){}
public:
/** 字段标志
*/
ScLong flags;
/** 模拟引导速度(cm/s)
*/
ScLong simspeed;
/** 音量
- 0x11: 最小
- 0x12:
- 0x13:
- 0x14:
- 0x15:
- 0x16:
- 0x17:
- 0x18:
- 0x19: 最大
如果高位为0则为静音
*/
ScLong voicevolume;
/** 周边搜索范围,m
*/
ScLong searchrange;
/** 偏航距离
- 0:不匹配
- 1: 50米
- 2: 100米
- 3: 200米
- 4: 300米
- 5: 400米
- <0: 作为0处理
- >5: 作为5处理
*/
ScLong waydistance;
ScLong reserved1;
/** 计算方式:最短?
*/
byte rcway;
/** 路径重计算方式:快速?完全?
*/
byte rrcway;
/** 语音播报频度
* - 2: 多
* - 1: 少
* - 0: 静音
*/
byte voicefreq;
/** 白天黑夜
* - 0 : 黑夜
* - 1 : 白天
*/
byte daymode;
/** turnbyturn模式还是地图模式
*/
byte turnbyturn;
/** 地理北向还是车头朝上
* - 0 : 地理北向
* - 1 : 车头上
*/
byte northup;
/** 引导或车辆移动时是否自动移动地图,不影响内部引导状态
*/
byte autolocate;
/**
* - 0 : 竖屏
* - 1 : 横屏
*/
byte screenorientation;
/** 串口号
*/
ScLong port;
/** 波特率
*/
ScLong baudrate;
/** 是否记录轨迹
*/
ScInt iRecTrk;
};
/** \brief 更新选项
* @param pOption 选项指针
* @return true 成功 , false 失败
*/
SC_API ScBool ScUpdateOption(const ScOption * pOption);
/** \brief 查询选项
*
* @param pOption 选项指针
* @return true 成功 , false 失败
*/
SC_API ScBool ScQueryOption(ScOption * pOption);
/** \brief 释放数组数据
*
* @param ppData 指向需要释放的数组的指针的地址
* @return 1 成功, 0,参数为空,-1 ppData指向的指针为空
* 函数返回后ppData纸向的指针被置为空。
*/
SC_API ScInt ScFreeData(void ** ppData);
/////////////////////API 定义////////////////////////////////////
///////////////////////////常量定义//////////////////////////////////
/**
* 事件返回值
*/
typedef enum ScEventHandleType
{
SC_IGNORED = 0x0, ///< 事件被忽略
SC_CONTINUED = 0x1, ///< 事件已被处理,并且事件处理者允许继续进行当前处理过程
SC_PROCESSED = 0x2, ///< 事件已被处理,并且不允许交由其它处理者处理
SC_TERMINATED = 0x4, ///< 事件处理者要求终止当前处理过程
} ScEventHandleType;
/**
* 引导事件类型定义
*/
typedef enum ScGuidEvent {
SC_GUID_OUTOFROAD = 0x0101, ///< 偏离道路
SC_GUID_OUTOFROUTE = 0x0102, ///< 偏离路径
SC_GUID_VEHICLESTOPPED = 0x0103, ///< 车辆停止
SC_GUID_VEHICLERUNNING = 0x0104, ///< 车辆开动
SC_GUID_SIMNAVSTARTED = 0x0105, ///< 模拟引导开始
SC_GUID_SIMNAVSTOPPED = 0x0106, ///< 模拟引导已终止
SC_GUID_SIMNAVCOMPLETED = 0x0107, ///< 模拟引导正常结束
SC_GUID_REALNAVSTARTED = 0x0108, ///< 真实引导开始
SC_GUID_REALNAVSTOPPED = 0x0109, ///< 真实引导已终止
SC_GUID_REALNAVCOMPLETED = 0x0110, ///< 真实引导正常结束
SC_GUID_RETURNTOROAD = 0x0111, ///< 偏离道路后回到道路
SC_GUID_RETURNTOROUTE = 0x0112, ///< 偏离路径后回到路径
SC_GUID_PREOUTOFROAD = 0x0113, ///< 第一次检测到偏离道路
SC_GUID_PREOUTOFROUTE = 0x0114, ///< 第一次检测到偏离路径
SC_GUID_PRERETURNTOROAD = 0x0115, ///< 第一次检测到回到道路
SC_GUID_PRERETURNTOROUTE = 0x0116, ///< 第一次检测到回到路径
SC_GUID_READY = 0x0117, ///< 引导准备就绪。上层AP应在此时启动引导
SC_GUID_GPSFIXED = 0x0118, ///< 引导中GPS重新定位
SC_GUID_GPSFIXING = 0x0119, ///< 引导中GPS定位中
} ScGuidEvent ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -