gsm代码

ffhhaa 2008-10-27 04:32:26
有人编写了下面的代码是关于gsm接口的模块,要我在里面编写sms发送,接受,初始化。。。。。的代码(此人暂时联系不上),可是我现在不知道怎么读下面的代码,不知道它们的意思是什么,比如说 这个宏定义 #define GSM_INTERFACE_MSGQ_MSG_CNT 20 ,#define GSM_INTERFACE_TIMER_STEP 500 要说明什么问题是什么意思,什么是多线程,什么是定时器。。。。。???是个初学的不要见笑,我只是实话实话,想读懂代码然后在编写代码。因为没什么开发的经验所以想问问大家如何快的入门真正的开发。先谢谢你了

ps:另外他说他是用c编译的,怎么这个里面有dword 这个貌似是c++里面的,等等基础问题,还请帮助一下,呵呵~~~
*******************************************************************************/
#include "fsu.h"
#include "osvl.h"

#define GSM_INTERFACE_MSGQ_MSG_CNT 20
#define GSM_INTERFACE_MSGQ_MSG_MAX_LEN 40
#define GSM_INTERFACE_THREAD_PRIORITY OSVL_THREAD_PRIORITY_BELOW_NORMAL
#define GSM_INTERFACE_THREAD_STACK_SIZE 8096
#define GSM_INTERFACE_TIMER_STEP 500
#define GSM_INTERFACE_TIMER_OPTION OSVL_TIMER_FOREVER

OSVL_HANDLE g_hGSM_interfaceMsgQ = OSVL_NULL;
OSVL_HANDLE g_hGSM_interfaceThread = OSVL_NULL;
OSVL_INT g_hGSM_interfaceTimer;

OSVL_DWORD fsu_GSM_interface_Thread(OSVL_DWORD dwParam)
{
int bSuc = 0;
char buf[200];
int len;
osvl_DateTime DateTime;

while(1)
{
len = osvl_msg_Read(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), OSVL_INFINITE);
if((len)&&(buf[0] == 'S'))
{
osvl_rtc_GetCurDateTime(&DateTime);
osvl_trace("fsu_GSM_interface_Thread Rece At %04d-%02d-%02d %02d:%02d:%02d\r\n",
DateTime.year,
DateTime.month,
DateTime.day,
DateTime.hour,
DateTime.min,
DateTime.sec
);
}
}

return bSuc;
}

OSVL_VOID fsu_GSM_interface_Timer(OSVL_INT nTimerID, OSVL_DWORD dwParam, OSVL_DWORD dwOption)
{
char buf[]="S";
// osvl_msg_Write(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), 0, OSVL_MSG_NORMAL);
}


/*******************************************************************************
* GSM接口初始化
******************************************************************************/
int GSM_interface_Init(void)
{
// GSM_interface_config *pGSM_interface_Conf;
int bSuc = 1;

g_hGSM_interfaceMsgQ = osvl_msg_Create(GSM_INTERFACE_MSGQ_MSG_CNT, GSM_INTERFACE_MSGQ_MSG_MAX_LEN, 0);
osvl_assert(g_hGSM_interfaceMsgQ);
if (!g_hGSM_interfaceMsgQ)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_MSGQ);
return 0;
}

g_hGSM_interfaceThread = osvl_thread_CreateThread(GSM_INTERFACE_THREAD_PRIORITY,
fsu_GSM_interface_Thread, (OSVL_DWORD)g_hGSM_interfaceMsgQ, GSM_INTERFACE_THREAD_STACK_SIZE);
osvl_assert(g_hGSM_interfaceThread);
if (!g_hGSM_interfaceThread)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_THREAD);
return bSuc;
}

g_hGSM_interfaceTimer = osvl_timer_CreateTimer(fsu_GSM_interface_Timer, 0);
osvl_assert(g_hGSM_interfaceTimer);
if (!g_hGSM_interfaceTimer)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_CREATE_TIMER);
return 0;
}

bSuc = osvl_timer_SetTimer(g_hGSM_interfaceTimer, GSM_INTERFACE_TIMER_STEP, GSM_INTERFACE_TIMER_OPTION);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_SET_TIMER);
return bSuc;
}

return bSuc;
}

/*******************************************************************************
* GSM接口关闭
******************************************************************************/
int GSM_interface_DeInit(void)
{
int bSuc = 1;

bSuc = osvl_timer_DeleteTimer(g_hGSM_interfaceTimer);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_TIMER);
return bSuc;
}

bSuc = osvl_thread_KillThread(g_hGSM_interfaceThread);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}

bSuc = osvl_msg_Close(g_hGSM_interfaceMsgQ);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}

return bSuc;
}

/*******************************************************************************
* 读GSM接口数据
******************************************************************************/
unsigned int GSM_interface_GPRS_ReadNChars(int nChannel,
unsigned char *buffer,
unsigned int chars_to_read)
{
unsigned int nNum = 0;

return nNum;
}

/*******************************************************************************
* 往GSM接口写数据
******************************************************************************/
unsigned int GSM_interface_GPRS_WriteNChars(int nChannel,
unsigned char *buffer,
unsigned int chars_to_write)
{
unsigned int i;
unsigned int nNum = chars_to_write;

osvl_trace("GSM_interface_GPRS_WriteNChars Len=%d --", chars_to_write);
for(i=0; i<chars_to_write; i++)
{
osvl_trace("-%02X", buffer[i]);
}
osvl_trace("\r\n");
return nNum;
}


/*******************************************************************************
* 读GSM接口数据
******************************************************************************/
unsigned int GSM_interface_SMS_ReadNChars(int nChannel,
unsigned char *buffer,
unsigned int chars_to_read)
{
unsigned int nNum = 0;

return nNum;
}

/*******************************************************************************
* 往GSM接口写数据
******************************************************************************/
unsigned int GSM_interface_SMS_WriteNChars(int nChannel,
unsigned char *buffer,
unsigned int chars_to_write)
{
unsigned int i;
unsigned int nNum = chars_to_write;

osvl_trace("GSM_interface_SMS_WriteNChars Len=%d --", chars_to_write);
for(i=0; i<chars_to_write; i++)
{
osvl_trace("-%02X", buffer[i]);
}
osvl_trace("\r\n");

return nNum;
}

...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ak7652552 2011-07-21
  • 打赏
  • 举报
回复
。。。。。
太乙 2008-10-28
  • 打赏
  • 举报
回复
汗~~~呵呵~~
shiyi820509 2008-10-28
  • 打赏
  • 举报
回复
mark
ffhhaa 2008-10-28
  • 打赏
  • 举报
回复
那他这里是编辑了一个完整的代码嘛?我应该怎么样在他的基础上再加上我的代码?或者说如何调用呢?
帅得不敢出门 2008-10-27
  • 打赏
  • 举报
回复
多线程
http://baike.baidu.com/view/65706.htm
多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。
此例OSVL_DWORD fsu_GSM_interface_Thread(OSVL_DWORD dwParam) 就是线程函数
osvl_thread_CreateThread ()线程创建函数

定时器
相当于你的一个闹钟,每隔一段特定时间做特定的事.
vc的定时器可以看看这个
http://hi.baidu.com/summerytyj/blog/item/b9b0cf168624e41e972b43b9.html

#include "fsu.h"
#include "osvl.h"

#define GSM_INTERFACE_MSGQ_MSG_CNT 20
#define GSM_INTERFACE_MSGQ_MSG_MAX_LEN 40
#define GSM_INTERFACE_THREAD_PRIORITY OSVL_THREAD_PRIORITY_BELOW_NORMAL //应该是线程优先级
#define GSM_INTERFACE_THREAD_STACK_SIZE 8096 //线程栈大小
#define GSM_INTERFACE_TIMER_STEP 500 //可能是500 (毫秒)
#define GSM_INTERFACE_TIMER_OPTION OSVL_TIMER_FOREVER

OSVL_HANDLE g_hGSM_interfaceMsgQ = OSVL_NULL;
OSVL_HANDLE g_hGSM_interfaceThread = OSVL_NULL;
OSVL_INT g_hGSM_interfaceTimer;

OSVL_DWORD fsu_GSM_interface_Thread(OSVL_DWORD dwParam) //线程函数
{
int bSuc = 0;
char buf[200];
int len;
osvl_DateTime DateTime;

while(1)
{
len = osvl_msg_Read(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), OSVL_INFINITE);
if((len)&&(buf[0] == 'S'))
{
osvl_rtc_GetCurDateTime(&DateTime); //可能是得到系统时间
osvl_trace("fsu_GSM_interface_Thread Rece At %04d-%02d-%02d %02d:%02d:%02d\r\n", //应该是时间格式化
DateTime.year,
DateTime.month,
DateTime.day,
DateTime.hour,
DateTime.min,
DateTime.sec
);
}
}

return bSuc;
}

//可能是定时器处理函数
OSVL_VOID fsu_GSM_interface_Timer(OSVL_INT nTimerID, OSVL_DWORD dwParam, OSVL_DWORD dwOption)
{
char buf[]="S";
// osvl_msg_Write(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), 0, OSVL_MSG_NORMAL);
}


/*******************************************************************************
* GSM接口初始化
******************************************************************************/
int GSM_interface_Init(void)
{
// GSM_interface_config *pGSM_interface_Conf;
int bSuc = 1;

g_hGSM_interfaceMsgQ = osvl_msg_Create(GSM_INTERFACE_MSGQ_MSG_CNT, GSM_INTERFACE_MSGQ_MSG_MAX_LEN, 0);
osvl_assert(g_hGSM_interfaceMsgQ);
if (!g_hGSM_interfaceMsgQ)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_MSGQ);
return 0;
}

//创建线程
g_hGSM_interfaceThread = osvl_thread_CreateThread(GSM_INTERFACE_THREAD_PRIORITY,
fsu_GSM_interface_Thread, (OSVL_DWORD)g_hGSM_interfaceMsgQ, GSM_INTERFACE_THREAD_STACK_SIZE);
osvl_assert(g_hGSM_interfaceThread);

if (!g_hGSM_interfaceThread)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_THREAD);
return bSuc;
}

//创建定时器
g_hGSM_interfaceTimer = osvl_timer_CreateTimer(fsu_GSM_interface_Timer, 0);
osvl_assert(g_hGSM_interfaceTimer);
if (!g_hGSM_interfaceTimer)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_CREATE_TIMER);
return 0;
}

//设置定时器
bSuc = osvl_timer_SetTimer(g_hGSM_interfaceTimer, GSM_INTERFACE_TIMER_STEP, GSM_INTERFACE_TIMER_OPTION);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_SET_TIMER);
return bSuc;
}

return bSuc;
}

/*******************************************************************************
* GSM接口关闭
******************************************************************************/
int GSM_interface_DeInit(void)
{
int bSuc = 1;

//取消定时器
bSuc = osvl_timer_DeleteTimer(g_hGSM_interfaceTimer);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_TIMER);
return bSuc;
}

//结束进程
bSuc = osvl_thread_KillThread(g_hGSM_interfaceThread);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}

bSuc = osvl_msg_Close(g_hGSM_interfaceMsgQ);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}

return bSuc;
}

帅得不敢出门 2008-10-27
  • 打赏
  • 举报
回复
typedef unsigned long dword; 可能是这样 要看其typedef的类型
独孤过儿 2008-10-27
  • 打赏
  • 举报
回复
他确实是用C写的,没晃点你。

dword这种类型,虽然不是内置类型,不过对于一个C程序员来说,也相当于“内置”了,只是你看上去有点不习惯罢

了...
帅得不敢出门 2008-10-27
  • 打赏
  • 举报
回复
楼主的结贴率有点高得吓人.
把信息补全
吃完饭再来看.
qkhhxkj102 2008-10-27
  • 打赏
  • 举报
回复
我的天呀
帅得不敢出门 2008-10-27
  • 打赏
  • 举报
回复
汗...
竟然有人向我提问 第一次

#include "fsu.h"
#include "osvl.h" 这头文件中的代码是什么还未知.
分析起来有点管中kui豹

把你不懂的地方用颜色标注出来吧
宏定义就是简单的替换 至于什么用处得看完代码才知道.

他没有更详细的资料么 就丢给你一堆代码?
【该课程的完整课件,请同学们在最后一个课时附件下载或者在视频的右边点击课件下载,所有素材都是免费提供完整版,请放心】适用人群5G感兴趣者,5G科普小白人群,5G的投资者,5G的技术人群,通信行业从业者,不想被时代抛弃的人群课程概述第五代移动通信技术(英语:5th generation mobile networks或5th generation wireless systems、5th-Generation,简称5G或5G技术)是最新一代蜂窝移动通信技术,也是即4G(LTE-A、WiMax)、3G(UMTS、LTE)和2G(GSM)系统之后的延伸。5G的性能目标是高数据速率、减少延迟、节省能源、降低成本、提高系统容量和大规模设备连接。Release-15中的5G规范的第一阶段是为了适应早期的商业部署。Release-16的第二阶段将于2020年4月完成,作为IMT-2020技术的候选提交给国际电信联盟(ITU)。您知道什么是5G吗?美国为什么封杀华为?经济主动权?思考:5G什么产业会更热?微信,支付宝这类4G时代的代表在3G时代是没有估量的中国的5G水平?5G人们所担心的辐射?未来生活?工业互联网、移动硬件,以及移动装置等产业有关IoT和IoE5G投资?5G技术?什么是人工智能?量子时代?云计算?边缘计算?5G不仅仅是一个单一的5G,实际是我国社会主义新时代的,往高质量发展的的一种产物;不仅仅是移动通信,承载着中国高技术产业的希望,承载着:我们国家走出停留的低技术阶段,走在新技术前面的硬核实力,折射出一个民族的生存能力和发展能力的

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧