如图所示,在程序下载到触摸屏时,如果勾选了“支持工程上传”,那么就可以将工程的源文件上传到电脑。否则就不能。
这个触摸屏据我所知,目前是无法反编译的,支持工程上传,会把做的源文件备份到触摸屏中,之后可以将备份到触摸屏中的源文件上传,也不是反编译。
望采纳。。。。。。
#includenbspampltdos.hampgtnbsp/*DOS接口函数*/nbsp#includenbspampltmath.hampgtnbsp/*数学函数的定义*/nbsp#includenbspampltconio.hampgtnbsp/*屏幕 *** 作函数*/nbsp#includenbspampltstdio.hampgtnbsp/*I/O函数*/nbsp#includenbspampltstdlib.hampgtnbsp/*库函数*/nbsp#includenbspampltstdarg.hampgtnbsp/*变量长度参数表*/nbsp#includenbspampltgraphics.hampgtnbsp/*图形函数*/nbsp#includenbspampltstring.hampgtnbsp/*字符串函数*/nbsp#includenbspampltctype.hampgtnbsp/*字符 *** 作函数*/nbsp#definenbspUPnbsp0x48nbsp/*光标上移键*/nbsp#definenbspDOWNnbsp0x50nbsp/*光标下移键*/nbsp#definenbspLEFTnbsp0x4bnbsp/*光标左移键*/nbsp#definenbspRIGHTnbsp0x4dnbsp/*光标右移键*/nbsp#definenbspENTERnbsp0x0dnbsp/*回车键*/nbspvoidnbsp*rarnbsp/*全局变量,保存光标图象*/nbspstructnbsppalettetypenbsppalettenbsp/*使用调色板信息*/nbspintnbspGraphDrivernbsp/*nbsp图形设备驱动*/nbspintnbspGraphModenbsp/*nbsp图形模式值*/nbspintnbspErrorCodenbsp/*nbsp错误代码*/nbspintnbspMaxColorsnbsp/*nbsp可用颜色的最大数值*/nbspintnbspMaxX,nbspMaxYnbsp/*nbsp屏幕的最大分辨率*/nbspdoublenbspAspectRationbsp/*nbsp屏幕的像素比*/nbspvoidnbspdrawboder(void)nbsp/*画边框函数*/nbspvoidnbspinitialize(void)nbsp/*初始化函数*/nbspvoidnbspcomputer(void)nbsp/*计算器计算函数*/nbspvoidnbspchangetextstyle(intnbspfont,nbspintnbspdirection,nbspintnbspcharsize)nbsp/*改变文本样式函数*/nbspvoidnbspmwindow(charnbsp*header)nbsp/*窗口函数*/nbspintnbspspecialkey(void)nbspnbsp/*获取特殊键函数*/nbspintnbsparrow()nbsp/*设置箭头光标函数*/nbsp/*主函数*/nbspintnbspmain()nbsp{nbspinitialize()/*nbsp设置系统进入图形模式nbsp*/nbspcomputer()nbsp/*运行计算器nbsp*/nbspclosegraph()/*系统关闭图形模式返回文本模式*/nbspreturn(0)nbsp/*结束程序*/nbsp}nbsp/*nbsp设置系统进入图形模式nbsp*/nbspvoidnbspinitialize(void)nbsp{nbspintnbspxasp,nbspyaspnbsp/*nbsp用于读x和y方向纵横比*/nbspGraphDrivernbsp=nbspDETECTnbsp/*nbsp自动检测显示器*/nbspinitgraph(nbspampGraphDriver,nbspampGraphMode,nbsp““nbsp)nbsp/*初始化图形系统*/nbspErrorCodenbsp=nbspgraphresult()nbsp/*读初始化结果*/nbspif(nbspErrorCodenbsp!=nbspgrOknbsp)nbsp/*如果初始化时出现错误*/nbsp{nbspprintf(“GraphicsnbspSystemnbspError:nbsp%s<br/>“,nbspgrapherrormsg(nbspErrorCodenbsp)nbsp)nbsp/*显示错误代码*/nbspexit(nbsp1nbsp)nbsp/*退出*/nbsp}nbspgetpalette(nbspamppalettenbsp)nbsp/*nbsp读面板信息*/nbspMaxColorsnbsp=nbspgetmaxcolor()nbsp+nbsp1nbsp/*nbsp读取颜色的最大值*/nbspMaxXnbsp=nbspgetmaxx()nbsp/*nbsp读屏幕尺寸nbsp*/nbspMaxYnbsp=nbspgetmaxy()nbsp/*nbsp读屏幕尺寸nbsp*/nbspgetaspectratio(nbspampxasp,nbspampyaspnbsp)nbsp/*nbsp拷贝纵横比到变量中*/nbspAspectRationbsp=nbsp(double)xasp/(double)yasp/*nbsp计算纵横比值*/nbsp}nbsp/*计算器函数*/nbspvoidnbspcomputer(void)nbsp{nbspstructnbspviewporttypenbspvpnbsp/*一些显示和触摸代码(linux on arm 平台)linux on arm 平台的一些显示和触摸功能
一、版本和平台:
代码版本:1.1
平台:linux arm开发板LCD: 800x480(宽x高),32位色深,带电容触摸屏
二、LCD 显示的过程:
定义一个数组 unsigned int virtual_lcd[480][800] 作为虚拟显存
每次显示内容,先将内容画在虚拟显存上(调用draw_xxx函数)
要显示什么就画什么,要显示几个就画几个(两次画在同一位置,新的会覆盖旧的)
全部画完之后,把虚拟显存上的东西显示出来(调用show_lcd_now函数)
三.功能
使用1.1版本可以实现如下功能:
1、 触屏返回坐标
2、划屏返回坐标和划过的距离
3、在LCD上显示文本:
语言:中文,英文
字体:仿宋,楷体,黑体,微软雅黑, 只能显示默认字体,没有粗体,斜体等
字号:支持6个字号:16 ,24, 32 ,40, 48, 56;16号既为16*16个像素点,中文是这样,英文和标点宽度可能减半,使用时请注意
4、 在LCD上显示色块(block)
5、 显示带框线的方框(box)
6、 显示带文本的按钮(button)
7、 显示bmp图(24bit, 底到上型DIB(bottom-up),应该是最常见的24bit bmp格式)
8、 按按钮时按钮反显(按下时显示另一种颜色),并触发事件(调用一个回调函数)
各功能对应的函数:
struct touch_screen_data touch_screen(void)//触屏
struct cross_screen_data cross_screen(void)//划屏
int draw_block(lcd_block * block)//画色块
int draw_box(lcd_box * box)//画方框
int draw_text(lcd_text * text )//画文本
int draw_button(lcd_button * button)//画按钮(只能画矩形按钮)
int draw_bmp(int x,int y,const char *filename)//画bmp图
int show_lcd_now(void)//将画的内容显示出来
int press_button(int num_of_button,...)//按按钮函数,可以配置按下可以配置按下按钮要做的事
四、例程
main.c中是上述函数使用方法的例程,有详述细注释。
源码lcd.c,lcd.h中也有详细注释。
测试效果:
开发板返回信息:
LCD显示效果:
五、注意
1、字库路径
使用显示文本功能,必须要把字库文件放到开发板上,
本demo默认需要将【fontlibrary文件及里面的字库文件】整体放到开发板/目录(根目录)下,
如果要放到别的路径,请到lcd.c文件中找到这句话:sprintf(filename,"/fontlibrary/%c%d.bin",text->type,text->size)去修改字库文件的路径
2、 使用时在你的工程中包含lcd.c,font.c,lcd.h,font.h 这四个文件,并一同编译
3、 本demo使用的测试图片103x100.bmp要和本demo的可执行文件放在同一个目录下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)