A188二次开发手册.docx

上传人:b****5 文档编号:4097230 上传时间:2022-11-27 格式:DOCX 页数:53 大小:86.51KB
下载 相关 举报
A188二次开发手册.docx_第1页
第1页 / 共53页
A188二次开发手册.docx_第2页
第2页 / 共53页
A188二次开发手册.docx_第3页
第3页 / 共53页
A188二次开发手册.docx_第4页
第4页 / 共53页
A188二次开发手册.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

A188二次开发手册.docx

《A188二次开发手册.docx》由会员分享,可在线阅读,更多相关《A188二次开发手册.docx(53页珍藏版)》请在冰豆网上搜索。

A188二次开发手册.docx

A188二次开发手册

前言

本使用手册详细说明了捷宝A1平台系列抄表机(JBA188,JBA168,JBA138)的二次开发工具,开发流程,API函数,以及通讯动态库函数,请在使用前仔细阅读该使用手册,以便保证您的正确使用和工作效率,敬请妥善保管以备日后查阅之用。

如发现本手册有编写错误之处,请予以指出,以便更正,谢谢!

目录

前言1

二次应用程序开发说明4

1.1cbjtool安装4

1.2编写应用程序4

1.3编程注意事项:

4

1.4编译程序4

1.4.1Cbjtool编译工具4

1.4.2编译步骤5

1.5下装文件5

1.6工程文件操作5

二次开发接口介绍6

2.1数据类型6

2.1.1基本数据类型6

2.1.2消息6

2.1.3显示区域7

2.1.4光标7

2.2键盘接口函数8

2.3LCD接口函数8

2.4底层输出函数9

2.5GDI接口显示函数9

2.6蜂鸣器与时钟接口函数13

2.6.1蜂鸣器函数13

2.6.2时钟接口13

2.6.3定时器接口14

2.7文件操作函数15

2.8数据库操作函数(bdc.h)17

2.9GUI组件库函数18

2.10消息处理函数31

2.10.1系统消息处理31

2.10.2GUI消息处理32

2.11标准c数据转换函数33

2.12标准c字符串函数34

2.13图标资源35

2.14串行通讯类36

2.15权限管理类37

2.16环境变量类37

2.17输入法接口39

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\’目录下。

1.3编程注意事项:

在定义数组的大小时应将字符串结束符’\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下编辑的,存盘后直接对其编译就可以了。

编译方法同<3>。

如果程序没有错误,编译连接后生成.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点阵西文字符,

参数:

同printf

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)

功能:

返回当前中文字体

返回:

返回值有以下两种取值

FONT_CH_12中文12点阵字体

FONT_CH_16中文16点阵字体

参数:

7.voidsetfonten(U8font)

功能:

设置西文字体

参数:

西文字体font可选

FONT_EN_088点阵西文字体

FONT_EN_1212点阵西文字体

FONT_EN_1616点阵西文字体

8.U8getfonten(void)

功能:

返回当前西文字体

返回:

返回以下值

FONT_EN_088点阵西文字体

FONT_EN_1212点阵西文字体

FONT_EN_1616点阵西文字体

参数:

9.voidsetfont(U8font)

功能:

设置当前字体

参数:

一种中文与一种西文字体组合值。

如:

setfont(FONT_CH_16|FONT_EN_12)

可用值有;

FONT_EN_088点阵西文字体

FONT_EN_1212点阵西文字体

FONT_EN_1616点阵西文字体

FONT_CH_12中文12点阵字体

FONT_CH_16中文16点阵字体

10.U8getfont(void)

功能:

返回当前字体设置

参数:

返回:

返回当前字体设置值,该值可能为中文字体与西文字体组给值(如FONT_CH16+FONT_EN_12),要取得中文字体或西文字体设置值请使用getfontch与getfonten

11.voidsetlinestyle(U8style)

功能:

设置直线类型

参数:

style直线类型,可选值有

LS_SOLID实线

LS_DASH虚线

LS_DOT点线

12.U8getlinestyle(void)

功能:

返回当前直线类型设置

参数:

返回:

LS_SOLID实线

LS_DASH虚线

LS_DOT点线

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码

返回:

成功则返回0。

7.U16setDateTimeByStr(char*dt)

功能:

用日期时间字符串设定时间,字符串格式为“07-10-1012:

00:

00”

参数:

dt为’\0’结尾的字符串指针

返回:

执行成功返回值为0

8.U16getDateTimeStr(char*dt)

功能:

读取日期时间的字符串,字符串格式为“07-10-1012:

00:

00”

参数:

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读取的字节数

fp为当前已打开的文件指针

返回:

实际读取的字节数

4.U32fwrite(P_U8ptr,U32size,MYFILE*fp);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1