求助!如何通过浏览器,利用ASP技术与远程嵌入式系统上的应用程序通信?

时间:2021-05-16 18:00:06
    大家好!我是机械专业的一名本科生,正在做毕业设计,题目是“基于ARM11的智能家居控制系统”。主要内容是,以一个ARM11开发板作为家庭网关,采集或者设置室内外的各种电器、设备等。这是服务器端的应用程序,是基于WinCE嵌入式操作系统的,不是Linux。在另一端,远程客户可以通过Internet网络,在浏览器上输入家庭网关的IP地址,对当前的家居环境信息进行查询,或者对家电设备发送控制命令。
    我现在遇到的问题是:远程客户端如何与家庭网关上运行的主监控程序相互通信呢?如果采用ASP网页技术,能过直接和监控程序之间通过网络通信吗?还是要通过其它接口,比如ActiveX,才能相互通信呢?
    我查了很多资料和网站,也没能得到确切的答案,感觉憋屈得很!希望各位前辈或坛友不吝赐教,为在下指点迷津,在下一定感激不尽!

附注:之前刚刚在另一个板块发过求助帖,觉得在这里问好像更合适,望版主谅解!

6 个解决方案

#1


这个我们就是外人了

#2


    其实现在最主要的就是ASP网页设计这一块,就是不知道能否使ASP和应用程序之间直接交互,而不用借助ActiveX或数据库这样的转接。

#3


/* PNP 机电部件节点数据结构 */
typedef struct
{
    UINT8                   ucChanNum;         /* 通道号 */
    UINT8                   ucAddr;            /* 通信地址 */
    UINT8                   ucLastOLState;     /* 上次在位状态 */
    UINT8                   ucCurOLState;      /* 当前在位状态 */
    UINT8                   ucIsResetFlag;     /* 是否下发过复位标志 */
    UINT8                   ucQueryTimes;      /* 复位后连续轮询次数 */
    UINT8                   ucIsConfig;        /* 是否有配置 */
    UINT8                   ucTransFlag;       /* 转发标志 */
    UINT8                   ucQueryFlag;       /* 查询标志 */
    UINT8                   ucReserved2;       /* 预留2 */
    UINT8                   ucReserved3;       /* 预留3 */ 
    UINT8                   ucReserved4;       /* 预留4 */ 
    BOARD_TYPE              enMainType;        /* 部件大类型 */
    UINT32                  ulSubType;         /* 部件子类型 */
    UINT32                  ulTransCmdErrCnt;  /* 转发命令错误计数*/
    CCU_NODE_STATE          enRegState;        /* 注册状态 */
    CCU_RSP_DATA            stRegInfo;         /* 注册过程中注册请求响应数据 */
    CCU_RSP_DATA            stVerInfo;         /* 注册过程中版本信息响应数据 */
    CCU_COUNT_STRU          stCountInfo;       /* PNP功能中相关计数信息 */
} PNP_485NODE, *PPNP_485NODE;
/* 上报的485机电注册信息数据域 */
typedef struct
{
   UINT16 uwCmd01Len;                           /* 0xXX, 0x01 */
   UINT16 uwCmd02Len;                           /* 0xXX, 0x02 */
   UINT8 *pucCmd01Buf;                          /* 01数据域, 响应完成码后开始,不包括校验 */
   UINT8 *pucmd02Buf;                           /* 02数据域, 响应完成码后开始,不包括校验 */
}RS485_RegInfoT, *PRS485_RegInfoT;
/* 透传消息结构体 */
typedef struct
{
    UINT8   ucChanNum;                          /* 消息通道号 */
    UINT16  uwLen;                              /* 消息长度 */
    UINT8   ucData[MAX_485_DATA_LEN];           /* 消息指针 */
} Direct485MsgT, *PDirect485MsgT;

#4


/* 透传消息发送单元数据结构定义 */
typedef struct
{
    UINT8           ucIsUsed;                       /* 消息是否下发  */
    UINT8           ucMsgType;                      /* 消息类型, 目前只支持485类型消息 */    
    UINT8           ucRptMode;                      /* 消息上报的方式 */
    UINT8           reserved1;                      /* reserved */
    UINT16          uwCmd;                          /* 命令字 */
    UINT16          uwDTMsgSeq;                     /* 透传命令序列号 */
    UINT16          uwPNPMsgSeq;                    /* PNP消息序列号 */    
    UINT32          ulTimeCnt;                      /* 超时计数 */
    UINT32          ulResId;                        /* 资源ID  */
}DIRECT_MSG_CB_T, *PDIRECT_MSG_CB_T;
/* 透传消息发送控制单元结构体定义 */
typedef struct
{
    UINT8            ucTabMsgSize;                    /* 本单元消息个数 */
    UINT8            ucReserved0;                     /* reserved */
    UINT8            ucReserved1;                     /* reserved */
    UINT8            ucReserved2;                     /* reserved */    
    PDIRECT_MSG_CB_T pstDtMsgTab;                     /* 透传消息体 */
}DIRECT_MSG_TAB_T, *PDIRECT_MSG_TAB_T;
/* 子卡状态数据结构 */
typedef struct
{
    UINT8  m_ucOnlineState;
    UINT8  m_ucType;
    UINT8  ucOnLineCnt;
    UINT8  ucOffLineCnt;
    UINT8  ucTypeCnt;
    UINT8  ucTypeErrCnt;
    UINT8  ucCfgType;
    UINT8  ucIsCfg;
    UINT8  ucConflictAlarm;
    UINT8  ucCommAlarm;
    UINT8  ucI2CErrCnt;
    UINT8  ucReserve0;
}CARD_STATE_TAB_T, *PCARD_STATE_TAB_T;

#5


/* 广播消息结构体  */
extern CCU485_BROADCASTCMDT  g_stBroadcast[MAX_CCU_CHAN_NUM];
/* 子卡在位维护结构体 */
extern CARD_STATE_TAB_T g_stCardState[MAX_INSIDE_CARD_NUM];
typedef INT32 (*EVENT_RECV_FUNC)(UINT32 ulResId, PNP_EVENT_ID_ENUM enEventId, UINT8 *pucBuf, UINT32 ulLen);
typedef INT32 (*MSG_RECV_FUNC)(UINT32 ulResId, UINT16 uwCmd, UINT16 uwSeq, UINT8 *pucBuf, UINT32 ulLen);
/* 初始化透传表 */extern UINT32   InitDtMsgTxTab(VOID);
/* 初始化card扫描接口 */extern VOID     InitCardPnp(VOID);
/* 初始化PNP模块接口 */extern UINT32   PNP_InitPnPModule(VOID);
/* 透传扫描接口 */extern VOID     ScanDtTxTab(VOID);
/* 地址轮询消息处理 */extern UINT32   PNP_AddrQueryProc(PCCU_MSG_FRAME pMsg);
/* 链路保持消息处理 */extern VOID     PNP_LinkKeepProc(PCCU_MSG_FRAME pMsg);
/* 地址自动分配消息处理 */extern UINT32   PNP_AddrAutoAllotProc(PPNP_485NODE pNode);
/* 发送定时消息到485通道接口 */
extern UINT32   PNP_SendTimerMsg(UINT8 ucChan,  PCCU_QUEUE_MSG pstMsg, UINT16 uwMsgLen,  CCU_TIMER_MSG_ENUM enMsgType);
/* 广播命令 */extern VOID     PNP_BroadCast(PCCU_MSG_FRAME pstMsg);
/* 处理API命令 */extern VOID     PNP_ProcApiMsg (PCCU_MSG_FRAME pMsg);
/* 注册事件上报回调接口 */extern UINT32   PNP_RegEventReportCB(EVENT_RECV_FUNC pFunc);
/* 消息上报注册回调接口 */extern UINT32   PNP_RegMsgReportCB(MSG_RECV_FUNC pFunc);
/* 下发PNP消息接口 */
extern UINT32   PnP_SendMsg(UINT32 ulResouceId, UINT16 uwCmd, UINT16 uwSeq, UINT8 *pucBuf, UINT32 ulLen);
/* 下发PNP消息到CCU接口 */
extern UINT32   PnP_Send2CCU(UINT8 ucNetFn, UINT16 uwCmd, UINT8 *pucBuf, UINT32 ulLen);
extern VOID     ProcSerialLoopMsg(PCCU_MSG_FRAME pMsg);
#endif /* __CCU_PNP_H__ */

#6


我觉得要有接口, asp显然不能简单实现. 

#1


这个我们就是外人了

#2


    其实现在最主要的就是ASP网页设计这一块,就是不知道能否使ASP和应用程序之间直接交互,而不用借助ActiveX或数据库这样的转接。

#3


/* PNP 机电部件节点数据结构 */
typedef struct
{
    UINT8                   ucChanNum;         /* 通道号 */
    UINT8                   ucAddr;            /* 通信地址 */
    UINT8                   ucLastOLState;     /* 上次在位状态 */
    UINT8                   ucCurOLState;      /* 当前在位状态 */
    UINT8                   ucIsResetFlag;     /* 是否下发过复位标志 */
    UINT8                   ucQueryTimes;      /* 复位后连续轮询次数 */
    UINT8                   ucIsConfig;        /* 是否有配置 */
    UINT8                   ucTransFlag;       /* 转发标志 */
    UINT8                   ucQueryFlag;       /* 查询标志 */
    UINT8                   ucReserved2;       /* 预留2 */
    UINT8                   ucReserved3;       /* 预留3 */ 
    UINT8                   ucReserved4;       /* 预留4 */ 
    BOARD_TYPE              enMainType;        /* 部件大类型 */
    UINT32                  ulSubType;         /* 部件子类型 */
    UINT32                  ulTransCmdErrCnt;  /* 转发命令错误计数*/
    CCU_NODE_STATE          enRegState;        /* 注册状态 */
    CCU_RSP_DATA            stRegInfo;         /* 注册过程中注册请求响应数据 */
    CCU_RSP_DATA            stVerInfo;         /* 注册过程中版本信息响应数据 */
    CCU_COUNT_STRU          stCountInfo;       /* PNP功能中相关计数信息 */
} PNP_485NODE, *PPNP_485NODE;
/* 上报的485机电注册信息数据域 */
typedef struct
{
   UINT16 uwCmd01Len;                           /* 0xXX, 0x01 */
   UINT16 uwCmd02Len;                           /* 0xXX, 0x02 */
   UINT8 *pucCmd01Buf;                          /* 01数据域, 响应完成码后开始,不包括校验 */
   UINT8 *pucmd02Buf;                           /* 02数据域, 响应完成码后开始,不包括校验 */
}RS485_RegInfoT, *PRS485_RegInfoT;
/* 透传消息结构体 */
typedef struct
{
    UINT8   ucChanNum;                          /* 消息通道号 */
    UINT16  uwLen;                              /* 消息长度 */
    UINT8   ucData[MAX_485_DATA_LEN];           /* 消息指针 */
} Direct485MsgT, *PDirect485MsgT;

#4


/* 透传消息发送单元数据结构定义 */
typedef struct
{
    UINT8           ucIsUsed;                       /* 消息是否下发  */
    UINT8           ucMsgType;                      /* 消息类型, 目前只支持485类型消息 */    
    UINT8           ucRptMode;                      /* 消息上报的方式 */
    UINT8           reserved1;                      /* reserved */
    UINT16          uwCmd;                          /* 命令字 */
    UINT16          uwDTMsgSeq;                     /* 透传命令序列号 */
    UINT16          uwPNPMsgSeq;                    /* PNP消息序列号 */    
    UINT32          ulTimeCnt;                      /* 超时计数 */
    UINT32          ulResId;                        /* 资源ID  */
}DIRECT_MSG_CB_T, *PDIRECT_MSG_CB_T;
/* 透传消息发送控制单元结构体定义 */
typedef struct
{
    UINT8            ucTabMsgSize;                    /* 本单元消息个数 */
    UINT8            ucReserved0;                     /* reserved */
    UINT8            ucReserved1;                     /* reserved */
    UINT8            ucReserved2;                     /* reserved */    
    PDIRECT_MSG_CB_T pstDtMsgTab;                     /* 透传消息体 */
}DIRECT_MSG_TAB_T, *PDIRECT_MSG_TAB_T;
/* 子卡状态数据结构 */
typedef struct
{
    UINT8  m_ucOnlineState;
    UINT8  m_ucType;
    UINT8  ucOnLineCnt;
    UINT8  ucOffLineCnt;
    UINT8  ucTypeCnt;
    UINT8  ucTypeErrCnt;
    UINT8  ucCfgType;
    UINT8  ucIsCfg;
    UINT8  ucConflictAlarm;
    UINT8  ucCommAlarm;
    UINT8  ucI2CErrCnt;
    UINT8  ucReserve0;
}CARD_STATE_TAB_T, *PCARD_STATE_TAB_T;

#5


/* 广播消息结构体  */
extern CCU485_BROADCASTCMDT  g_stBroadcast[MAX_CCU_CHAN_NUM];
/* 子卡在位维护结构体 */
extern CARD_STATE_TAB_T g_stCardState[MAX_INSIDE_CARD_NUM];
typedef INT32 (*EVENT_RECV_FUNC)(UINT32 ulResId, PNP_EVENT_ID_ENUM enEventId, UINT8 *pucBuf, UINT32 ulLen);
typedef INT32 (*MSG_RECV_FUNC)(UINT32 ulResId, UINT16 uwCmd, UINT16 uwSeq, UINT8 *pucBuf, UINT32 ulLen);
/* 初始化透传表 */extern UINT32   InitDtMsgTxTab(VOID);
/* 初始化card扫描接口 */extern VOID     InitCardPnp(VOID);
/* 初始化PNP模块接口 */extern UINT32   PNP_InitPnPModule(VOID);
/* 透传扫描接口 */extern VOID     ScanDtTxTab(VOID);
/* 地址轮询消息处理 */extern UINT32   PNP_AddrQueryProc(PCCU_MSG_FRAME pMsg);
/* 链路保持消息处理 */extern VOID     PNP_LinkKeepProc(PCCU_MSG_FRAME pMsg);
/* 地址自动分配消息处理 */extern UINT32   PNP_AddrAutoAllotProc(PPNP_485NODE pNode);
/* 发送定时消息到485通道接口 */
extern UINT32   PNP_SendTimerMsg(UINT8 ucChan,  PCCU_QUEUE_MSG pstMsg, UINT16 uwMsgLen,  CCU_TIMER_MSG_ENUM enMsgType);
/* 广播命令 */extern VOID     PNP_BroadCast(PCCU_MSG_FRAME pstMsg);
/* 处理API命令 */extern VOID     PNP_ProcApiMsg (PCCU_MSG_FRAME pMsg);
/* 注册事件上报回调接口 */extern UINT32   PNP_RegEventReportCB(EVENT_RECV_FUNC pFunc);
/* 消息上报注册回调接口 */extern UINT32   PNP_RegMsgReportCB(MSG_RECV_FUNC pFunc);
/* 下发PNP消息接口 */
extern UINT32   PnP_SendMsg(UINT32 ulResouceId, UINT16 uwCmd, UINT16 uwSeq, UINT8 *pucBuf, UINT32 ulLen);
/* 下发PNP消息到CCU接口 */
extern UINT32   PnP_Send2CCU(UINT8 ucNetFn, UINT16 uwCmd, UINT8 *pucBuf, UINT32 ulLen);
extern VOID     ProcSerialLoopMsg(PCCU_MSG_FRAME pMsg);
#endif /* __CCU_PNP_H__ */

#6


我觉得要有接口, asp显然不能简单实现.