1、 TPTHTG 触摸屏 C 函数功能块 用户手册 无锡 信捷 电气 股份 有限公司 资料编号: HC 10 20140124 2.D 目 录 前言 . 1 1 函数功能块介绍 . 2 1.1 函数功能块运行环境 2 1.2 函数功能块制作 2 1.3 函数功能块编译 4 1.4 函数功能块运行 6 2 函数功能块说明 1 2.1 书写方式 1 2.2 函数类型 1 2.3 预定义数据类型 2 2.4 预定义宏指令 3 2.5 系统函数 3 2.5.1 Read/ Write 3 2.5.2 Reads/Writes 3 2.5.3 Enter/ Leave . 4 2.5.4 Send 4 2
2、.5.5 Receive . 4 2.5.6 Malloc 5 2.5.7 Free . 5 2.5.8 Delay 5 2.5.9 ScreenJump 5 2.5.10 OpenWindow . 6 2.5.11 CloseWindow . 6 2.5.12 Beep . 6 2.5.13 WakeScreen 6 2.5.14 Crc 6 2.5.15 BendCalYDepth . 7 2.5.16 DCMapSetBackColor 7 2.5.17 DCMapDrawLine . 7 2.5.18 DCMapDrawRect . 8 2.5.19 DCMapDrawCircle 9
3、 2.5.20 DCMapDrawEllipse . 9 2.5.21 DCMapDrawCircleArc 10 2.5.22 DCMapDrawEllipseArc . 11 2.5.23 DCMapClear 11 2.6 宏操作 12 2.6.1 Max 12 2.6.2 Min . 12 2.6.3 MAKEWORD 12 2.6.4 MAKEDWORD . 12 2.6.5 LOBYTE 12 2.6.6 HIBYTE . 13 2.6.7 LOWORD 13 2.6.8 HIWORD . 13 2.7 C 语言常见库函数 13 2.7.1 abs 13 2.7.2 acos、 a
4、sin、 atan 13 2.7.3 cos、 sin、 tan . 14 2.7.4 log. 14 2.7.5 log10 . 14 2.7.6 pow . 14 2.7.7sqrt . 14 2.7.8 rand . 15 2.8 触摸屏内部对象( PSW、 PFW、 PSB) 15 2.8.1 PSW 对象 15 2.8.2 PSB 对象 15 2.8.3 PFW 对 象 16 2.9 PLC 外部对象元件 D、 Y 读写 . 16 3 工程示例 18 3.1 数据比较 . 18 3.2 C 函数实现自由通讯 20 3.3 加减乘除运算 . 23 3.4 C 函数画直线、矩形、圆、椭圆
5、、圆弧、椭圆弧 27 4 常见问题 1 4.1 如何对正在编辑 C 功能函数程序进行编译? 1 4.2 如何在 C 功能函数块中读取 PLC 参数值或者写入 PLC 参数值? 1 4.3 使用 Read、 Write、 Reads、 Writes 函数快捷方法? 1 4.4 函数功能块在线模拟时为什么不能执行? 2 4.5Read 函数和 Reads 有什么区别? 2 4.6 函数功能块与标准的 C 语言有什么区别? 2 附录 1 C 标准库函数的调用限制 . 1 附录 2 C 函数使用注意事项 . 2 TPTHTG 系列触摸屏 C 函数功能块用户手册 1 前言 相较于 TP、 TH、 TG
6、系列触摸屏软件中简单的工程命令、高级功能指令,新添加的 C 函数功能块,使触摸屏可以完成更多、更复杂的运算和通讯要求,使系统功能得到了更大限度的发挥,更好地满足客户的实际需求。 本书通过介绍 C 指令以及结合一些简单的示例来说明关于 C 函数功能的使用方法,因此在介绍中只使用了一些简单易懂的 C 函数知识,主要目的是让客户找到了解这个功能,知道一些基本的书写规则,了解在使用过程中的一些注意事项。 TPTHTG 系列触摸屏 C 函数功能块用户手册 2 1 函数功能块 介绍 1.1 函数功能块运行环境 触摸屏函数功能块一定要下载程序到触摸屏中才能正常运行,不支持在线模拟和离线模拟; 1.2 函数功
7、能块制作 触摸屏软件要求 V2.C.6 以上,具体查看触摸屏软件 “帮助 ”中 “关于 ”。 创建函数过程: 1. 打开 V2.C.6 TouchWin 软件。 2. 选择“工程”栏“函数功能块”,右击“函数功能块”插入,在弹出的信息对话框中填写函数功能块的基本信息。 TPTHTG 系列触摸屏 C 函数功能块用户手册 3 注:函数名必须为英文名,具体请参考 2.1 节。 3. 双击打开函数功能块“ Func1”,编写程序。 注:可以按键盘上的 F7 键,对编辑好的 C 函数进行编译,检查函数编辑是否有错。 TPTHTG 系列触摸屏 C 函数功能块用户手册 4 1.3 函数 功能块 编译 根据当
8、前使用电脑的不同,用户在编辑函数的过程中可以按键盘 F7 键或 Fn 键加 F7 键(即Fn+F7)组合进行编译。 通过编译功能可以检测函数是否英文状态输入、语法 以书写方式有没有错误、变量有没有定义、编辑函数错误等。 1) 英文状态输入 2) 语法 以书写方式 错误 在使用函数库的函数或者宏时,直接在函数库列表中选中要使用函数双击或者根据函数库列表显示的形式在 编辑区进行输入函数: TPTHTG 系列触摸屏 C 函数功能块用户手册 5 3) 变量没有定义 4) 函数 编辑错误 很多用户在操作函数时,都是手动输入函数名及函数内变量,很容易出现编辑错误。在输入函数时,可以使用参考以下使用方法:
9、如 Read 函数: 在功能函数输入 Read 后,按住键盘 shift 键 加 +左括号键弹出如下对话框: TPTHTG 系列触摸屏 C 函数功能块用户手册 6 1.4 函数功能块运行 用户可以根据自己的需要选择功能键或者功能域调用函数功能块,具体介绍如下: 1) 功能键 调用函数功能块 在画面放置一个功能键,在左边“可选功能”中选择“函数调用”,然后点击“添加”按钮,添加此功能,选中右边“ 函数调用”,点击修改添加函数。 TPTHTG 系列触摸屏 C 函数功能块用户手册 7 注:关于并行执行、顺序执行 说明 请参考附录 2。 2) 功能域调用函数功能块 在画面放置一个功能域,将功能域模式设
10、为连续,功能里添加函数功能块,如下: TPTHTG 系列触摸屏 C 函数功能块用户手册 8 注:关于并行执行、顺序执行 说明 请参考附录 2。 TPTHTG 系列触摸屏 C 函数功能块用户手册 1 2 函数功能块说明 2.1 书写方式 函数功能块标识符的写法完全按照标准 C 语言书写, 在 C 语言中用于标识名字的有效字符序列称为标识符,指 的就是 用户自定义的变量、函数、常量、语句标号名称 。 合法的标识符 1) 由字母,数字和下划线组成 ; 2) 第一位只能为字母或下划线 ; 3) 不能和 C 语言 的关键字 完全相同 ; 4) 长度 小于等于 256 字符; 5)定义的函数名和变量名不能
11、与 C 语言标准函数名相同; 2.2 函数类型 根据函数的使用方法,触摸屏中将函数分为公共函数和功能函数。 公共函数 公共函数: 即全局函数 ,在公共函数中定义的函数可以被任意的功能函数调用, 需要写函数原型 ,可以有参数和返回值。 例: DWORD Crc(BYTE* pBytes, int Length) DWORD dwCrc = 0; return dwCrc; 公共函数中调用功能函 数 void CallFunction() Func1(); 功能函数 功能 函数:无返回值、无参数、无需写函数原型,只要指定函数名,直接写函数体,功能函数可以通过功能键和功能域里的函数调用功能执行。 例
12、: BYTE byArray10; DWORD dwCrc = 0; dwCrc = Crc(byArray, 10); / 调用公共函数 TPTHTG 系列触摸屏 C 函数功能块用户手册 2 2.3 预定义数据类型 typedef unsigned long DWORD; typedef unsigned char BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int UINT; 数据类型预定义: enum FALSE = 0, TRUE = 1; enum ECom HMI_L
13、OCAL_MCH = -1, DOWNLOAD, PLC, EComMax ; enum EInnerReg TYPE_PSB = 0, TYPE_PSW, TYPE_PFW, TYPE_PRW, TYPE_PHW, TYPE_PUW, TYPE_PCW, EInnerRegMax ; enum EDataType TYPE_NONE, TYPE_BIT, TYPE_BYTE, TYPE_WORD, TYPE_DWORD, TYPE_REGS, TYPE_BYTE_3 ; TPTHTG 系列触摸屏 C 函数功能块用户手册 3 2.4 预定义宏指令 #define Max(a,b) (a) (b
14、) ? (a) : (b) #define Min(a,b) (a) 16) 写操作: BOOL Write(int comID, int staID, int objType, int add1, int add2, int dataType, DWORD dwValue); 注释 comID: 串口( HMI_LOCAL_MCH = -1,DOWNLOAD = 0,PLC = 1) staID: 站号 objType: 寄存器地址类型 add1,add2: 寄存器地址 dataType: TYPE_BIT = 1 占用 1 字节 TYPE_BYTE = 2 占用 1 字节 TYPE_WOR
15、D = 3 占用 2 字节 TYPE_DWORD = 4 占用 4 字节 pValue: 数值缓冲区(长度应该与 dataType 类型 匹配) 返回值: TRUE / FALSE(成功 / 失败) 举例 BOOL bValue ; /定义一个布尔变量 WORD wValue ; /定义一个整型变量 Read(PLC, 1, XINJE_XC_BIT_M, 0, 0, TYPE_BIT, / 读位 M0 Read(PLC, 1, XINJE_XC_REG_D, 0, 0, TYPE_WORD, / 读 D0 /注意在书写函数时,一定要加 写操作: BOOL Writes(int comID,
16、int staID, int objType, int add1, int regs, void* TPTHTG 系列触摸屏 C 函数功能块用户手册 4 pRegs); 注释 comID: 串口( HMI_LOCAL_MCH = -1,DOWNLOAD = 0,PLC = 1) staID: 站号 objType: 寄存器地址类型 add1: 寄存器地址 regs : 寄存器个数 pRegs: 数值缓冲区(长度应该与需读写的寄存器组大小匹配) 返回值: TRUE / FALSE(成功 / 失败) 举例 WORD wValue 10; /定义一个整型变量 Reads(PLC,1,XINJE_XC
17、_REGS_D,0,1, wValue); / 读 D0 组 /Reads、 Writes 针对多个连续地址寄存器数据读和写操作; 注意:具体函数添加操作步骤可以参考 Read 函数操作。 2.5.3 Enter/ Leave 功能 信号量控制,保证通信为同步方式,与 Send 和 Receive 配合使用 格式 void Enter( BYTE ComID ); void Leave( BYTE ComID ); 注释 comID: 串口( HMI_LOCAL_MCH = -1,DOWNLOAD = 0,PLC = 1) 举例 Enter(PLC); /获取串口资源 Leave(PLC);
18、/是否串口资源 2.5.4 Send 功能 发送串口数据 格式 BOOL Send( BYTE ComID, BYTE *SndBuf, WORD Len ); 注释 comID: 串口( DOWNLOAD = 0, PLC = 1) SndBuf: 发送缓冲区,类型为字节 Len: 要发送的数据长度,按字节计 返回值: TRUE / FALSE(成功 / 失败) 举例 BYTE RcvArray8=0x01,0x01,0x00,0x10,0x00,0x10,0x3C,0x03 Send(PLC,RcvArray,8) 2.5.5 Receive 功能 接收串口数据 格式 WORD Recei
19、ve( BYTE ComID, BYTE *RcvBuf, WORD Len, WORD TimeOut, BYTE TimeOutBytes); 注释 comID: 串口( DOWNLOAD = 0, PLC = 1) RcvBuf: 接收缓冲区,类型为字节 Len: 希望接收的数据长度,按字节计 Timeout : 总接收超时时间( 0:一直 等待)。 单位: ms TPTHTG 系列触摸屏 C 函数功能块用户手册 5 TimeOutBytes: 字节间接收超时时间(一般设为 6) 返回值: 实际接收到的数据长度,按 字节计 举例 BYTE byArray10; Receive(PLC,
20、byArray, 10, 0, 6); 2.5.6 Malloc 功能 申请堆空间 格式 void *Malloc( UINT size ) 注释 Size: 申请空间大小( bytes) Return: 被申请空间的地址,等于 NULL 表示申请失败 Malloc: malloc 向系统申请分配指定 size 个字节的内存空间 替代标准库函数中的malloc 使用 ,功能完全相同 Note: 申请的空间请及时释放 举例 Unit* p; p = (Unit *) Malloc (sizeof(10); 2.5.7 Free 功能 与 malloc()函数配对使用,释放 malloc 函数申请
21、的动态内存 格式 void Free( void *pBuffer) 注释 pBuffer : 待释放的空间 Free: 替代标准库函数中的 Free 使用 ,功能完全相同 Note: 申请的空间请及时释放 举例 BYTE* pBuffer = Malloc(10); Free(pBuffer) 2.5.8 Delay 功能 延时 格式 void Delay( UINT ms); 注释 ms: 延时时间(单位: ms),最大可设定延时时间为 0xFFFF * 延时精度 延时精度: Delay 函数的精确值单位, TP、 OP 系列均为 10ms, TPA61T 、 TH / 延时 10 毫秒
22、Delay(1000); / 延时 1 秒 2.5.9 ScreenJump 功能 画面跳转 格式 WORD ScreenJump(WORD ScreenNo); 注释 screenNo: 画面号 TPTHTG 系列触摸屏 C 函数功能块用户手册 6 Return: 实际跳转到的画面号 举例 ScreenJump(2); / 跳转到 2 号画面 2.5.10 OpenWindow 功能 打开窗口 格式 void OpenWindow(WORD winNo, WORD winX, WORD winY); 注释 winNo: 窗口号 winX: 窗口 X 轴起始位置 winY: 窗口 Y 轴起始位
23、置 举例 OpenWindow(2, 10, 10); / 位于( 10, 10)点显示窗口 2 2.5.11 CloseWindow 功能 关闭窗口 格式 void CloseWindow(WORD winNo); 注释 winNo: 窗口号 举例 CloseWindow(2); / 关闭 2 号窗口 2.5.12 Beep 功能 蜂鸣器响一次 格式 void Beep(void); 注释 无 举例 Beep( ); 2.5.13 WakeScreen 功能 唤醒画面(从屏保状态) 格式 void WakeScreen(void); 注释 无 举例 WakeScreen( ); 2.5.14
24、 Crc 功能 计算 Crc 值 格式 UINT Crc(BYTE* pHead, UINT nLen); 注释 pHead: 数据缓冲区起始地址 nLen: 缓冲区长度 Return: Crc 值 举例 BYTE buffer3 = 0x01, 0x02, 0x03; UINT nCrc = Crc(buffer, 3); /将数组 buffer Crc 的校验值放到变量 nCrc 中 TPTHTG 系列触摸屏 C 函数功能块用户手册 7 2.5.15 BendCalYDepth 功能 获取 进深 返回值 ,主要应用在折弯机行业中,适用的 人机界面型号有 BTH-765M、BMH-765M
25、格式 float BendCalYDepth( float fAngle, float fThick, float fHatch, DWORD nStrenth, DWORD nEMode ); 注释 fAngle: 折弯角度 fThick: 板材厚度 fHatch: 下模开口宽度 nStrenth: 抗张强度 nEMode: 弹性模量 举例 float Angle,Thick,Hatch; DWORD Strenth,EMode; Angle = * (float *)(PSW+300); Thick = * (float *)(PSW+302); Hatch = * (float *)(P
26、SW+304); Width = * (float *)(PSW+306); Strenth = * (DWORD *)(PSW+308); EMode = * (DWORD *)(PSW+310); * (float *)(PSW+1500) = BendCalYDepth(Angle,Thick,Hatch,Strenth,EMode); /将返回值放入 PSW1500, PSW1501 中 2.5.16 DCMapSetBackColor 功能 修改画布背景颜色 ( V2.D 以上软件支持) 格式 BOOL DCMapSetBackColor( DWORD dwDCMapID, DWOR
27、D BackColor ) 注释 dwDCMapID: 设置 画布号 BackColor: 设置 颜色值,一般以十六进制输入,如 0x00ff00 举例 DCMapSetBackColor( DWORD 1, DWORD 0x0000ff ); 应用 请参考 第 3 章 3.4 节 2.5.17 DCMapDrawLine 功能 自定义画直线 ( V2.D 以上软件支持) 格式 BOOL DCMapDrawLine( DWORD dwDCMapID, int x, int y, int Width, int Height, int linewidth, DWORD color ) 注释 dwD
28、CMapID: 设置 画布号 x: 设置直线 显示 位置 X 坐标点值 y: 设置直线 显示 位置 Y 坐标点值 Width: 设置直线宽度 Height: 设置直线高度 Linewidth: 设置直线线宽,即粗细 Color: 设置直线颜色 TPTHTG 系列触摸屏 C 函数功能块用户手册 8 举例 int x_pos,y_pos,line_height,line_width,linewidth; DWORD line_color; x_pos=PSW300; y_pos=PSW301; line_color=*(DWORD *)(PSW+302); line_height=PSW304;
29、line_width=PSW305; linewidth=PSW306; DCMapClear(1);/在使用 过程中先使用 DCMapClear 指令把图形删除 DCMapDrawLine(1,x_pos,y_pos,line_width,line_height,linewidth,line_color); 应用 请参考第 3 章 3.4 节 2.5.18 DCMapDrawRect 功能 自定义画矩形 ( V2.D 以上软件支持) 格式 BOOL DCMapDrawRect( DWORD dwDCMapID, int x, int y, int Width, int Height, int
30、 linewidth, DWORD color, BOOL FillRect, DWORD FillColor ) 注释 dwDCMapID: 设置 画布号 x: 设置 矩形 显示 位置 X 坐标点值 y: 设置 矩形 显示 位置 Y 坐标点值 Width: 设置 矩形 宽度 值 Height: 设置 矩形 高度 值 Linewidth: 设置 矩形 线宽,即粗细 Color: 设置 矩形 颜色 值 FillRect: 设置 矩形内部是否要填充 FillColor: 设置 填充颜色值 举例 int x_pos,y_pos,rec_height,rec_width,linewidth; DWOR
31、D rec_color,fillcolor; BOOL fill; x_pos=PSW300; y_pos=PSW301; rec_color=*(DWORD *)(PSW+302); rec_height=PSW304; rec_width=PSW305; linewidth=PSW306; fillcolor=*(DWORD *)(PSW+308); fill=GetPSBStatus(300); DCMapClear(1); DCMapDrawRect(1,x_pos,y_pos,rec_width,rec_height,linewidth,rec_color,fill,fillcolo
32、r); 应用 请参考第 3 章 3.4 节 TPTHTG 系列触摸屏 C 函数功能块用户手册 9 2.5.19 DCMapDrawCircle 功能 自定义 画 圆 ( V2.D 以上软件支持) 格式 DWORD BendCalForce(float fThick, float fWidth, float fDHatch) 注释 dwDCMapID: 设置画布号 x: 设置 圆显示 位置 X 坐标点值 y: 设置 圆显示 位置 Y 坐标点值 Radius: 设置 圆直径 Linewidth: 设置 圆 线宽,即粗细 Color: 设置 圆 颜色 FillRect: 设置 圆 内部是否 要填充
33、FillColor: 设置 圆 填充颜色值 举例 int x_pos,y_pos,Radius,linewidth; DWORD circle_color,fillcolor; BOOL fill; x_pos=PSW300; y_pos=PSW301; circle_color=*(DWORD *)(PSW+302); Radius=PSW304; linewidth=PSW306; fillcolor=*(DWORD *)(PSW+308); fill=GetPSBStatus(300); DCMapClear(1); DCMapDrawCircle(1,x_pos,y_pos,Radiu
34、s,linewidth,circle_color,fill,fillcolor); 应用 请参考第 3 章 3.4 节 2.5.20 DCMapDrawEllipse 功能 自定义 画 椭圆 ( V2.D 以上软件支持) 格式 BOOL DCMapDrawEllipse(DWORD dwDCMapID, int x, int y, int X_Axis_Len, int Y_Axis_Len, int linewidth, DWORD color, BOOL FillRect, DWORD FillColor ) 注释 dwDCMapID: 设置画布号 x: 设置椭圆显示位置 X 坐标点值 y
35、: 设置椭圆显示位置 Y 坐标点值 X_Axis_Len: 设置椭圆宽度值 Y_Axis_Len: 设置椭圆高度值 Linewidth: 设置椭圆线宽,即粗细 Color: 设置椭圆颜色值 FillRect: 设置椭圆内部是否要填充 FillColor: 设置填充颜色值 TPTHTG 系列触摸屏 C 函数功能块用户手册 10 举例 int x_pos,y_pos,x_Axis,Y_Axis,linewidth; DWORD E_color,fillcolor; BOOL fill; x_pos=PSW300; y_pos=PSW301; E_color=*(DWORD *)(PSW+302);
36、 x_Axis=PSW304; Y_Axis=PSW305; linewidth=PSW306; fillcolor=*(DWORD *)(PSW+308); fill=GetPSBStatus(300); DCMapClear(1); DCMapDrawEllipse(1,x_pos,y_pos,x_Axis,Y_Axis,linewidth,E_color,fill,fillcolor); 应用 请参考第 3 章 3.4 节 2.5.21 DCMapDrawCircleArc 功能 自定义画圆弧 ( V2.D 以上软件支持) 格式 BOOL DCMapDrawCircleArc( DWOR
37、D dwDCMapID, int x, int y, int Radius, int linewidth, DWORD color, DWORD StartAngle, DWORD EndAngle ) 注释 dwDCMapID: 设置画布号 x: 设置圆弧显示位置 X 坐标点值 y: 设置圆弧显示位置 Y 坐标点值 Radius: 设置圆弧宽度值 Linewidth: 设置圆弧线宽,即粗细 Color: 设置圆弧颜色 FillRect: 设置圆弧内部是否要填充 FillColor: 设置圆弧填充颜色值 举例 int x_pos,y_pos,Radius,linewidth; DWORD ci
38、rcle_color; float StartAngle,EndAngle; x_pos=PSW300; y_pos=PSW301; circle_color=*(DWORD *)(PSW+302); Radius=PSW304; linewidth=PSW306; StartAngle=*(float *)(PSW+308); EndAngle=*(float *)(PSW+310); DCMapClear(1); TPTHTG 系列触摸屏 C 函数功能块用户手册 11 DCMapDrawCircleArc(1,x_pos,y_pos,Radius,linewidth,circle_colo
39、r,StartAngle,EndAngle); 应用 请参考第 3 章 3.4 节 2.5.22 DCMapDrawEllipseArc 功能 自定义画椭圆弧 ( V2.D 以上软件支持) 格式 BOOL DCMapDrawEllipseArc( DWORD dwDCMapID, int x, int y, int X_Axis_Len, int Y_Axis_Len, int linewidth, DWORD color, DWORD StartAngle, DWORD EndAngle) 注释 dwDCMapID: 设置画布号 x: 设置椭圆弧显示位置 X 坐标点值 y: 设置椭圆弧显示位
40、置 Y 坐标点值 X_Axis_Len: 设置椭圆弧宽度值 Y_Axis_Len: 设置椭圆弧高度值 EArc_width: 设置椭圆弧线宽,即粗细 Color: 设置椭圆弧颜色值 StartAngle: 设置椭圆弧 起始角度值 EndAngle: 设置 椭圆弧终点角度值 举例 int x_pos,y_pos,x_Axis,Y_Axis,linewidth; DWORD eArc_color; float StartAngle,EndAngle; BOOL fill; x_pos=PSW300; y_pos=PSW301; eArc_color=*(DWORD *)(PSW+302); x_A
41、xis=PSW304; Y_Axis=PSW305; linewidth=PSW306; StartAngle=*(float *)(PSW+308); EndAngle=*(float *)(PSW+310); DCMapClear(1); DCMapDrawEllipseArc(1,x_pos,y_pos,x_Axis,Y_Axis,linewidth,eArc_color,StartAngle,EndAngle); 应用 请参考第 3 章 3.4 节 2.5.23 DCMapClear 功能 清除画布内容 ( V2.D 以上软件支持) 格式 BOOL DCMapClear( DWORD
42、dwDCMapID ) 注释 dwDCMapID: 设置画布号 举例 DCMapClear(1); 应用 请参考第 3 章 3.4 节 TPTHTG 系列触摸屏 C 函数功能块用户手册 12 2.6 宏操作 2.6.1 Max 功能 取两个书中最大值 格式 Max( A, B ); 注释 A: 变量 B: 变量 举例 Max(3, 4) = 4 2.6.2 Min 功能 取两个数中最小值 格式 Min(A, B); 注释 A: 变量 B: 变量 举例 Min(3, 4) = 3 2.6.3 MAKEWORD 功能 将两个字节组合成一个字 格式 MAKEWORD(lb, hb); 注释 lb:
43、字节变量,两个组合字节中低字节 hb: 字节变量,两个组合字节中高字节 举例 MAKEWORD(0x01, 0x02) = 0x0201 2.6.4 MAKEDWORD 功能 将两个单字组合成一个双字 格式 MAKEDWORD(lw, hw) 注释 lb: 字变量,两个组合字中低字 hb: 字变量,两个组合字中高字 举例 MAKEDWORD(0x01, 0x02)= 0x00020001 2.6.5 LOBYTE 功能 获取一个字的低字节 格式 LOBYTE(w) 注释 w: 字变量 举例 LOBYTE(0x0201) = 0x01 TPTHTG 系列触摸屏 C 函数功能块用户手册 13 2.
44、6.6 HIBYTE 功能 获取一个字的高字节 格式 HIBYTE(w) 注释 w: 字变量 举例 HIBYTE(0x0201)= 0x02 2.6.7 LOWORD 功能 获取一个双字的低字 格式 LOWORD (w) 注释 w: 双字变量 举例 LOWORD(0x00020001)= 0x0001 2.6.8 HIWORD 功能 获取一个双字的高字 格式 HIWORD(w) 注释 w: 双字变量 举例 HIWORD(0x00020001)= 0x0002 2.7 C 语言常见库函数 本章主要简单介绍 C 语言中常用库函数使用,其他非 常见函数用户可以直接参考 C 程序设计教材或者通过网站查
45、询学习 C 语言的使用。 2.7.1 abs 功能 求整数 x 的绝对值 格式 Short int abs(short int x) 注释 x: 单字整型变量 举例 short int *a; *a=PSW300; PSW320=abs(*a); 2.7.2 acos、 asin、 atan 功能 计算 acosx、 asinx、 atanx 反三角函数值 格式 float acos(float x) float asin(float x) float atan(float x) 注释 x: 双字浮点型变量 举例 *(float*)(PSW+300)= acos(*(float*)(PSW+3
46、10)*180/3.1415926; TPTHTG 系列触摸屏 C 函数功能块用户手册 14 *(float*)(PSW+302)= asin(*(float*)(PSW+312)*180/3.1415926; *(float*)(PSW+304)= atan(*(float*)(PSW+314)*180/3.1415926; 2.7.3 cos、 sin、 tan 功能 计算 cosx、 sinx、 tanx 三角 函数值 格式 float cos(float x) float sin(float x) float tan(float x) 注释 x: 双字浮点型变量,输入的值必须为弧度 举
47、例 *(float*)(PSW+300)= cos(*(float*)(PSW+310)*3.1415926/180); *(float*)(PSW+302)= sin(*(float*)(PSW+310)*3.1415926/180); *(float*)(PSW+304)= tan(*(float*)(PSW+310)*3.1415926/180); 2.7.4 log 功能 求 log 即 格式 float log(float x) 注释 x: 双字浮点型变量 举例 *(float*)(PSW+320)=log(*(float*)(PSW+300); 2.7.5 log10 功能 求 x
48、 格式 float log(float x) 注释 x: 双字浮点型变量 举例 *(float*)(PSW+320)=log10(*(float*)(PSW+300); 2.7.6 pow 功能 计算 的值 格式 float log(float x) 注释 x: 双字浮点型变量 举例 *(float*)(PSW+320)=pow(*(float*)(PSW+300); 2.7.7sqrt 功能 计算 的值 格式 float sqrt (float x) 注释 x: 双字浮点型变量 举例 *(float*)(PSW+320)=sqrt(*(float*)(PSW+300); TPTHTG 系列触
49、摸屏 C 函数功能块用户手册 15 2.7.8 rand 功能 产生 -90 到 32767 间的随机函数 格式 int rand(void) 注释 x: 双字整型变量 举例 if (0 = GetPSBStatus(300) SetPSB(300); srand(30); *(DWORD*)(PSW+300) = rand(); 注: 在调用 rand 函数产生随机数前,必须先利用 srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为 1, rand ()产生的是假随机数字,每次执行时是相同的。若要不同 ,以不同的值 来初始化它 .初始化的函数就是 srand()。 2.8