A188二次开发手册Word格式文档下载.docx
- 文档编号:17013253
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:53
- 大小:86.51KB
A188二次开发手册Word格式文档下载.docx
《A188二次开发手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《A188二次开发手册Word格式文档下载.docx(53页珍藏版)》请在冰豆网上搜索。
2.18系统服务调用40
二次应用程序开发说明
A1平台的应用程序可用ARM处理器的开发工具ADS(ARMDeveloperSuite)进行编写与编译,这里主要介绍我公司提供的集成开发环境cbjtool2007来开发二次应用程序。
1.1cbjtool安装
将CbjTool2007目录整个拷贝到您的电脑根目录下。
..\BIN\可执行文件(*.EXE)
..\LIB\运行库文件(*.L)
..\INCLUDE\头文件(*.H)
..\licenses\licenses.dat文件
1.2编写应用程序
源程序可以在任何编辑软件中进行编辑,即可以用通用工具(写字版,UltraEdit-32等)和我们提供的CbjTool.exe该文件在’..\BIN\’目录下。
在定义数组的大小时应将字符串结束符’\0’考虑进去,否则若引起RAM地址冲突可能会产生不可预料的结果.例如:
取时间函数getDateTimeStr(s),返回的是17个字符长的时间串,加上结束符’\0’共18个字节长,故定义s的大小时至少是18个字节。
1.4编译程序
1.4.1Cbjtool编译工具
在’..\BIN\’目录下Cbjtool.exe具有抄表程序编辑,编译功能。
运行平台:
win9x\win2000\winXP
1.4.2编译步骤
如果我们的程序是用通用工具来编辑的,那么编译前也要把程序存到某个目录下,然后才能对其进行编译。
编译过程如下:
<
1>
运行Cbjtool.exe
2>
在菜单“文件”里打开文件(即所要编译的C源程序)。
3>
在菜单“程序”里选择“编译”,编译没有错后再选择“连接”;
或直
选择“生成”,也可以直接单击工具栏上的绿色三角符号。
如果程序是在Cbjtool.exe下编辑的,存盘后直接对其编译就可以了。
编译方法同<
。
如果程序没有错误,编译连接后生成.bin文件、.o文件、.axf文件。
在Cbjtool.exe界面的下方有编译结果报告。
1.5下装文件
程序正确编译后生成的.bin文件,我们要把它下装到抄表机上,以使其在抄表机上运行。
下装前请先连接好抄表机与微机的通讯电缆,并进入抄表机的通讯等待状态,然后点击cbjtool.exe中的’下装程序’菜单(或快捷按钮)即可。
如果要下装数据库(*.dbf)文件,可点击cbjtool.exe中的’通讯管理器’菜单(或快捷按钮)。
1.6工程文件操作
如果您的源程序在多个文件中,就需要建立工程文件统一编译连接。
具体步骤如下:
先选择cbjtool.exe中’工程-新建’菜单,在弹出的’另存为’对话框中选择存放有源程序的目录,并输入一个工程名,然后点’保存’。
这时cbjtool将新建一个扩展名为.JBP的工程文件并打开’工程管理器’,您可以在’工程管理器’中添加源文件。
注意:
软件会自动将包含main()函数的C文件排到工程文件列表的最上面。
另外,一个工程中所有用到的源文件(.C)、头文件(.H)及工程文件(.JBP)必须放在同一个目录下。
以后可以选择cbjtool.exe中’工程-打开’菜单来打开已经建立的工程。
工程打开后要进行编译连接时请选择’程序-生成’或点击三角形的快捷按钮。
二次开发接口介绍
A1平台二次开发接口由一系列数据类型与系统功能调用API函数组成,如无特别声明,A1平台的所有数据类型及函数原型均在jblib.h头文件中。
2.1数据类型
这里将介绍A1平台开发时所需用到的一些常用数据类型,则于GUI组件类别及其属性较多,所以与GUI组件相关的数据类型将放到GUI库函数说明中介绍。
2.1.1基本数据类型
U88bit无符号类型.同unsignedchar
U1616bit无符号类型.同unsignedint
U3232bit无符号类型.同unsignedlong
P_U8指向U8类型数据指针.同unsignedchar*
P_U16指向U16类型数据指针.同unsignedint*
P_U32指向U32类型数据指针.同unsignedlong*
全局变量只能动态始化,局部变量可以静态初始化,即声明时初始化。
2.1.2消息
与消息处理相关的数据类型只有一个TMsg结构体,其声明如下:
typedef__packedstructtagMessage{
unsignedintMsg;
void*Obj;
unsignedshortWParam;
unsignedshortLParam;
unsignedcharResult;
}TMsg,*PMsg;
成员说明:
Msg:
消息类型
Obj:
消息目标对象,即将接收并处理该消息的对象,若消息处理对象不确定,或者该消息需要多个可能的对象处理则Obj值可能为NULL
WParam:
消息参数1,具体内容依消息类型而定
LParam:
消息参数2,具体内容依消息类型而定
Result:
消息返回值,若该消息被处理Result将被置值为MSG_OK(MSG_OK值为1)
2.1.3显示区域
矩形区域结构体Rect
typedefstructtagRect{
U8left;
U8top;
U8right;
U8bottom;
U8width;
U8height;
}Rect,*PRect;
left:
矩形区域左边坐标
tTop:
矩形区域顶部坐标
right:
矩形区域右边坐标
bottom:
矩形区域底部坐标
width:
矩形区域宽度
height:
矩形区域高度
若要更改Rect大小及位置请使用以下四个宏来操作
SetRectWidth(rt,value):
设置Rect宽度
SetRectHeight(rt,value):
设置Rect高度
SetRectTop(rt,value):
修改Rect顶部位置
SetRectLeft(rt,value):
修改Rect左边位置
2.1.4光标
typedef__packedstructtagCurosr{
HWNDowner;
U8type;
U8x;
U8y;
U8flag;
}Cursor,*PCursor;
owner:
该光标所有者,即需要显示光标的组件
type:
光标类型,光标显示形状0—2分别为坚线、工字型、下划线型光标
x:
光标X坐标,屏幕坐标
y:
光标Y坐标,屏幕坐标
flag:
光标状态,为1则光标正在显示,为0则光标已消隐
2.2键盘接口函数
键盘按键值分为扫描码与标准键值两种,即一个按键可以用扫描码与标准按键来表示。
扫描码与键盘设计布局有关,如果键盘布局设计变更其扫描码可能也会变化。
标准健值是固定的,如“退出”(ESC)键在不同型号不同键盘布局的机器上键值均为27。
1.U8keygos(U32n)
功能:
从键盘接收一个按键,等待n(ms)指定时间
参数据:
n,等待的延时参数,单位为毫秒
返回:
有按键则为键值,无按键返回0。
备注:
keygos返回的按键值为扫描码,区别于标准键值,如“退出”键值为十六进制0x03,系统定义为常量CK_ESC,扫描码定义均以CK_打头,可以在”keydef.h”头文件中找到所有键码定义。
2.U8key(U16*msg)
从键盘等待一个按键,如果没有按键,则无限期等待,直到按键产生为止
参数:
msg为指向十六位无符号数的指针,如果不需要处理消息则直接令msg为NULL或0即可。
有按键才返回,返回标准键值,*msg返回本次按键的消息值
key返回的按键值为标准键值,如”退出”键键值为27,同PC机ESC键值一样,系统定义为VK_ESC,标准键值定义均以VK_打头,可以在”keydef.h”头文件中找到所有键值定义。
2.3LCD接口函数
LCD接口函数提供LCD屏的直接控制与绘图操作,属于较为底层的开发接口,若非需要较高的绘图性能与响应速度,一般显示输出请使用GDI函数集
1.voidlcd_setcontract(intc)
设置LCD屏对比度
对比度取值范围0–255
2.voidLCD_ShowImage(U8*buf,U8startx6,U8starty,U8endx6,U8endy,U8mode)
显示一4位16级灰度图片
buf灰度图片数据
startx:
图片左上角x坐标,屏幕坐标
starty:
图片左上角y坐从标,屏幕坐标
endx:
图片右下角x坐从标,屏幕坐标
endy:
图片右下角y坐从标,屏幕坐标
mode:
显示模式,有以下可用显示模式
Disp_Mode_Normal普通模式
Disp_Mode_Inverse反白模式
Disp_Mode_Or或模式
Disp_Mode_And与模式
Disp_Mode_Xor异或模式
Disp_Mode_Not求反模式
2.4底层输出函数
底层输出为操作系统支持的几个最简单的输出操作,而其它类别的输出调用(如GDI与GUI函数库)则需要系统执行某些初始化后才能调用。
1.voidcls(void)
清屏
3.intprintf(constchar*format,...)
可将各种数据类型的数据格式化后显示在屏幕上。
format格式化串。
用于控制转换后串的格式。
包括:
%d有符号整型
%u无符号整型
%x无符号十六进制数
%c字符
%s字符串
%p指针
浮点数据转字符串请便用jb_ftoa函数
4.intuprintf(constchar*format,...)
格式化输出到串口
同printf
5.intAprintf(constchar*format,...)
格式化输出8*8点阵西文字符,
2.5GDI接口显示函数
1.voidsetcolor(U8color)
设置前景色
color颜色值,取值为
GDI_COLOR_MIN0
GDI_COLOR_MAX15
GDI_COLOR_LIGHT5
GDI_COLOR_NORMAL10
GDI_COLOR_DARK15
2.U8getcolor(void)
返回当前前景色设置
无
3.voidsetbkcolor(U8color)
设置背景色
color背景颜色值,取值同setcolor
4.U8getbkcolor(void)
返回当前背景色设置
5.voidsetfontch(U8font)
设置中文字体
中文字体font可选
FONT_CH_12中文12点阵字体
FONT_CH_16中文16点阵字体
6.U8getfontch(void)
返回当前中文字体
返回值有以下两种取值
7.voidsetfonten(U8font)
设置西文字体
西文字体font可选
FONT_EN_088点阵西文字体
FONT_EN_1212点阵西文字体
FONT_EN_1616点阵西文字体
8.U8getfonten(void)
返回当前西文字体
返回以下值
9.voidsetfont(U8font)
设置当前字体
一种中文与一种西文字体组合值。
如:
setfont(FONT_CH_16|FONT_EN_12)
可用值有;
10.U8getfont(void)
返回当前字体设置
返回当前字体设置值,该值可能为中文字体与西文字体组给值(如FONT_CH16+FONT_EN_12),要取得中文字体或西文字体设置值请使用getfontch与getfonten
11.voidsetlinestyle(U8style)
设置直线类型
style直线类型,可选值有
LS_SOLID实线
LS_DASH虚线
LS_DOT点线
12.U8getlinestyle(void)
返回当前直线类型设置
13.voidsetcharspace(U8space)
设置字符间距
字符间距space单位为像素
14.U8getcharspace(void)
返回当前字符间距设置,单位为像素
15.voidsetlinespace(U8space)
设置当前字符行间距
行间距space单位为像素
16.U8getlinespace(void)
返回当前行间距设置,单位为像素
17.voidline(U8x1,U8y1,U8x2,U8y2)
以当前线型与前景色画线段
x1起点X坐标
y1起点Y坐标
x2终点X坐标
y2终点Y坐标
注:
line函数不支持画斜线,即X与Y座标至少需有一组应相等。
18.voidrectangle(U8x1,U8y1,U8x2,U8y2)
以当前线型与前景色画矩形框
x1矩形左上角X坐标
y1矩开左上角Y坐标
x2矩形右下角X坐标
y2矩形右下角Y坐标
19.voidbar3d(U8left,U8top,U8iw,U8ih)
画有立体效果的三维边框
left左上角X坐标
top左上角Y坐标
iw三维BAR宽度
ih三维BAR高度
20.voidfillcolor(U8x1,U8y1,U8x2,U8y2,U8color)
用指定颜色填充指定矩形区域
x1矩形区左上角X坐标
y1矩形区左上角Y坐标
x2矩形区右下角X坐标
y2矩形区右下角Y坐标
color用来填充的颜色
21.voiddrawicon(U8*buf,U8x,U8y,U8w,U8h)
在指定位置画指定大小4级灰度图标
buf4级灰度图标数据
x图标左上角X坐标
y图标右上角Y坐标
w图标宽度
h图标高度
22.U16textwidth(U8font,unsignedchar*text)
返回指定字符串用指定字体显示时所需占用宽度,单位为像素
font字体类型
text‘\0’结尾字符串
text字串在font指定字体下显示所需要宽度,该宽度计算包含了字间距
注备:
text长度最大为250字符
要测试text在当前字体下显示所需宽度,只须令font=getfont()即可
23.U16textheight(U8font,unsignedchar*text)
返回指定字符串用指定字体显示时所需占用高度,单位为像素
font字体类型
text以’\0’结尾字符串
text字串在font指定字体下显示所需高度,该高度计算包含了行间距
text最大长度为250字符
24.voidouttextxy(constU8*text,U8x,U8y,U8mode)
在指定坐标显示字符串
text以’\0’结尾字符串
xX坐标,以像素为单位
yY坐标,以像素为单位
mod显示模式,可选值有以下几种
Disp_Mode_Normal正常显示
Disp_Mode_Inverse反转显示
Disp_Mode_Or叠加显示
Disp_Mode_And与模式显示
Disp_Mode_Xor异或显示
Disp_Mode_Not求反显示
25.voidouttextxyex(constU8*text,U8x,U8y,U8mode,U8w)
在指定坐标以指定字符宽显示一字符串
w指定字符宽,一般情况字符占位宽由字体与字符间距和决定,这里可以强制指定字符占位宽为w,w单位为像素。
其它参数同outtextxy函数。
2.6蜂鸣器与时钟接口函数
2.6.1蜂鸣器函数
1.voidBeep(U32time)
蜂鸣器响
time时长,单位毫秒
2.6.2时钟接口
2.voidDelay(U32ms)
延时指定时间间隔
ms毫秒级时间
3.U16GetTime(U32*bcdtime)
取时间
bcdtime指向32位无符号整型的指针
返回值为0则表示执行成功bcdtime存储了hhmmss(时分秒)格式的BCD码。
4.U16GetDate(U32*bcddate)
取日期
bcdtime指向32位无符号整型的指针
返回值为0则表示执行成功bdcdate存储了WYYMMDD(星期年月日)格式的BCD码,星期为(0..6)代表(星期日—星期六)
5.U16SetTime(U32bcdtime)
设置时间
hhmmss(时分秒)格式的BCD码。
成功则返回0。
6.U16SetDate(U32bcddate)
设置日期
YYMMDD(年月日)格式的BCD码
7.U16setDateTimeByStr(char*dt)
用日期时间字符串设定时间,字符串格式为“07-10-1012:
00:
00”
dt为’\0’结尾的字符串指针
执行成功返回值为0
8.U16getDateTimeStr(char*dt)
读取日期时间的字符串,字符串格式为“07-10-1012:
dt为接收缓冲区指针,其大小应至少为18字节
返回值:
读取成功返回值为0
9.intgetWeek(void)
读取星期值。
返回(0..6)代表(星期日—星期六)
2.6.3定时器接口
11.voidSetTimer(U32us)
开启定时器
us定时时间,单位为微秒,指定定时间到将产生定时器消息,但定时器计数并不停止,直到调用StopTimer定时器才停止计数。
GUI封装了定时器消息的处理。
如果使用了GUI的Window对象,在定时器发生时会产生一个WM_TIMER消息,可以通过Window组件的OnMsg事件获得该消息。
GUI默认的定时器消息时间间隔为100ms即每秒钟产生10次WM_TIMER消息。
如果需要直接处理定时器消息请先用
setUserMsgMask(MSG_MASK_DEFAULT|MSG_MASK_TIMER);
进行登记
然后调用getSystemMessage等待消息
定时器为非循环定时器,若要循环产生定时器消息需在接收到定时器消息时,调用SetTimer(value)来重置定时器。
12.U32GetTimer(void)
读定时器计数
当前定时器计数值,单位为微秒
该函数返回自SetTimer执行后到GetTimer执行时逝去的精确时间
13.voidStopTimer(void)
停用定时器
2.7文件操作函数
1.MYFILE*fopen(P_U8filename,P_U8mode);
打开(或新建)一个文件。
filename要打开(或新建)文件的文件名
mode文件打开方式串,该串中根据需要包含了r、w、a三种字符的组合。
r以只读方式打开文件,文件指针定位在起始位置。
w以写方式打开文件,文件指针定位在起始位置。
a以追加方式打开文件,如果文件不存在则新建,文件指针定位在末尾。
若正确打开文件则返回相应文件指针,否则返回NULL。
2.intfclose(MYFILE*fp);
关闭一个文件
fp为当前已打开的文件指针
若正常关闭返回0
3.U32fread(P_U8ptr,U32size,MYFILE*fp);
从文件中读取数据。
ptr存放文件内容的指针
size读取的字节数
实际读取的字节数
4.U32fwrite(P_U8ptr,U32size,MYFILE*fp);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- A188 二次开发 手册
![提示](https://static.bdocx.com/images/bang_tan.gif)