|
WinCE中的Touch Panel驱动是由GWES模块来管理的,Touch Panel驱动接收用户的触摸信息,并将其转换为屏幕上的坐标信息,传给GWES模块。在WinCE中,Touch Panel驱动是分层的,分为MDD层和PDD层,这和其他WinCE设备驱动是一样的。MDD层由微软提供,用户只需要实现MDD和PDD层间的 DDSI函数就可以了。如图
WinCE中的GWES模块负责加载和管理Touch Panel驱动,Touch Panel的MDD层向上提供DDI接口,PDD层是针对硬件的实现,对MDD层提供DDSI接口。
1 Touch Panel驱动中的数据结构 (1) TOUCH_PANEL_SAMPLE_FLAGS 用于描述一个采样点的信息,这些信息被定义在一个枚举结构中: enum enumTouchPanelSampleFlags { TouchSampleValidFlag = 0x01, TouchSampleDownFlag = 0x02, TouchSampleIsCalibratedFlag = 0x04, TouchSamplePreviousDownFlag = 0x08, TouchSampleIgnore = 0x10, TouchSampleMouse = 0x40000000 }; TouchSampleValidFlag:一个有效的采样值 TouchSampleDownFlag:第一次按触摸屏时,返回该flag TouchSampleIsCalibratedFlag:采样的x和y坐标值不需要再被校验了 TouchSamplePreviousDownFlag:表示上一次采样状态是按在触摸屏上 TouchSampleIgnore:忽略这次采样值 TouchSampleMouse:预留
(2) TPDC_CALIBRATION_POINT 用于描述一个校验点的相关信息,结构如下: struct TPDC_CALIBRATION_POINT { INT PointNumber; INT cDisplayWidth; INT cDisplayHeight; INT CalibrationX; INT CalibrationY; }; PointNumber:校验点索引值,用于描述校验点在LCD上的位置 0:中间 1:左上 2:左下 3:右下 4:右上 cDisplayWidth:显示的宽度 cDisplayHeight:显示的高度 CalibrationX:校验点的x坐标值 CalibrationY:校验点的y坐标值
(3) TPDC_CALIBRATION_POINT_COUNT 用于描述需要校验的点的个数,结构如下: struct TPDC_CALIBRATION_POINT_COUNT { DDI_TOUCH_PANEL_CALIBRATION_FLAGS flags; INT cCalibrationPoints; }; flags:一般为0 cCalibrationPoints:需要校验的点的个数,一般是5
(4) gIntrTouch和gIntrTouchChanged 这是两个被MDD层用到的中断,需要在PDD层中定义,如下: DWORD gIntrTouch = SYSINTR_NOP; DWORD gIntrTouchChanged = SYSINTR_NOP; gIntrTouch用于描述触摸屏中断,要和硬件的触摸屏中断相关联。 gIntrTouchChanged用于在触摸屏按下后,每隔一段时间进行一次采样,应该和硬件的一个定时器中断相关联。 这两个值应该在DdsiTouchPanelEnable(..)函数中和硬件中断关联,并在函数DdsiTouchPanelGetPoint(..)中根据情况清除相应的中断。
2 MDD层API MDD为上层导出所需的Touch Panel驱动接口函数,上层通过这些函数可以完成对Touch Panel的操作,下面会介绍这些函数的功能。 (1) BOOL TouchPanelEnable(PFN_TOUCH_PANEL_CALLBACK pfnCallback): 使能Touch Panel设备,用于初始化Touch Panel。 pfnCallback:指向处理Touch Panel事件的回调函数
(2) Void TouchPanelDisable(void): 禁用Touch Panel设备。
(3) BOOL TouchPanelGetDeviceCaps(INT iIndex, LPVOID lpOutput ): 获得Touch Panel设备的相关信息。 iIndex:索引值 TPDC_SAMPLE_RATE_ID:采样率信息 TPDC_CALIBRATION_POINT_COUNT_ID:采样点个数信息 TPDC_CALIBRATION_POINT_ID:采样点坐标信息 lpOutput:指向一个内存区域,用于存放获得的相关信息
(4) VOID TouchPanelCalibrateAPoint(INT32 UncalX, INT32 UncalY, INT32* pCalX, INT32* pCalY): 将输入的未经过校验的坐标信息转换成校验后的坐标信息。 UncalX:输入的X坐标 UncalY:输入的Y坐标 pCalX:校验后的X坐标 pCalY: 校验后的Y坐标
(5) VOID TouchPanelPowerHandler(BOOL bOff): Touch Panel的电源控制函数。 bOff:TRUE表示关闭电源,FALSE表示打开电源
(6) BOOL TouchPanelReadCalibrationPoint(INT* pRawX, INT* pRawY): 获得Touch Panel的坐标。 pRawX:触摸屏的X坐标 PRawY:触摸屏的Y坐标
(7) VOID TouchPanelReadCalibrationAbort(void): 终止当前的校验。
(8) VOID TouchPanelSetCalibration(INT32 cCalibrationPoints, INT32* pScreenXBuffer, INT32* pScreenYBuffer, INT32* pUncalXBuffer, INT32* pUncalYBuffer): 校验函数。通过一组实际的触摸屏上采集的点坐标和相应的屏幕坐标计算校验系数。具体公式如下: Sx = A1*Tx + B1*Ty + C1 Sy = A2*Tx + B2*Ty + C2 这里就是通过显示屏坐标和采样的触摸屏坐标计算A1,B1,C1,A2,B2,C2。 cCalibrationPoints:校验点的个数 pScreenXBuffer:一组显示屏上的X坐标 pScreenYBuffer:一组显示屏上的Y坐标 pUncalXBuffer:一组触摸屏上采样的X坐标 pUncalYBuffer:一组触摸屏上采样的Y坐标
(9) BOOL TouchPanelSetMode(INT iIndex, LPVOID lpInput): 设置Touch Panel的工作模式。 iIndex:索引模式 TPSM_SAMPLERATE_HIGH:设置高采样率 TPSM_SAMPLERATE_LOW:设置低采样率 TPSM_PRIORITY_HIGH_ID:设置触摸屏的IST为高优先级 TPSM_PRIORITY_NORMAL_ID:设置IST为正常优先级 lpInput:指向一块内存,其中包含相关信息。
3 PDD层API (1) LONG DdsiTouchPanelAttach(void): 该函数在Touch Panel驱动的Dll被加载的时候调用
(2) LONG DdsiTouchPanelDettach(void): 该函数在Touch Panel驱动的Dll被卸载的时候调用
(3) BOOL DdsiTouchPanelEnable(void): 打开Touch Panel电源并做初始化。一般会在这里初始化一些信息,打开Touch Panel设备电源并做初始化。
(4) VOID DdsiTouchPanelDisable(void): 关闭Touch Panel设备。关闭Touch Panel电源并释放资源。
(5) BOOL DdsiTouchPanelGetDeviceCaps(ULONG iIndex, LPVOID lpOutput): 查询Touch Panel设备的相关信息 iIndex:查询的索引值 TPDC_SAMPLE_RATE_ID:查询采样率信息 TPDC_CALIBRATION_POINT_ID:查询需要校验的点的坐标 TPDC_CALIBRATION_POINT_COUNT_ID:查询用于校验的点的个数 lpOutput:根据iIndex值分别指向相关的信息
(6) void DdsiTouchPanelGetPoint(TOUCH_PANEL_SAMPLE_FLAGS pTipState, PLONG pUnCalX, PLONG pUnCalY): 获得Touch Panel上被按下的点的状态和坐标。 pTipState:当前触摸点的状态,比如无效点,有效点,被按下的点等。 pUnCalX:触摸点的X坐标 pUnCalY:触摸点的Y坐标
(7) VOID DdsiTouchPanelPowerHandler(BOOL bOff): 设置Touch Panel的电源状态。 bOff:TRUE表示关闭电源,FALSE表示打开电源
(8) BOOL DdsiTouchPanelSetMode(ULONG iIndex, LPVOID lpInput): 设置Touch Panel工作模式。 iIndex:模式索引 TPSM_SAMPLERATE_HIGH_ID:高采样率 TPSM_SAMPLERATE_LOW_ID:低采样率 lpInput:指向包含相关信息的内存
4 注册表设置 对于Touch Panel驱动来说,有些注册表项是需要配置的。具体如下: “InputConfig”:WinCE系统输入配置。 Bit0表示键盘输入 Bit1表示Touch Panel输入 Bit2表示硬件按键输入 “DeviceName”:Touch Panel驱动的名字。 “MaxCalError”:Touch Panel的精确度配置。 “CalibrationData”:Touch Panel的校验值。第一次启动WinCE后,需要通过WinCE的触摸屏校验程序对Touch Panel进行校验。校验完成后,校验值会被写入注册表里面。
下面是关于Touch Panel的注册表配置的例子: [HKEY_LOCAL_MACHINE\ControlPanel] "InputConfig"=dword:3 ;3 => keybd and touch screen [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] "DriverName"="touch.dll" "MaxCalError"=dword:8 "CalibrationData"="446,671 36,191 38,1179 856,1161 862,169 "
个人觉得,要想更好的理解Touch Panel驱动,还是需要去读读代码,基于WinCE6.0下,可以参考"\WINCE600\PLATFORM\H4SAMPLE\SRC\DRIVERS\TOUCH"下面的驱动,基于这个驱动开发自己的驱动会比较方便。 |
相关推荐
wince touch driver
MSPS(million samples per second)表示每秒采样百万次,是转换速率的单位,而转换速率(conversion rate)是指完成一次从模拟量到数字量的AD转换所需要时间的倒数。我们知道S3C6410的ADC最大的A/D转换时钟频率是5MHZ,所以可以计算出一次A/D转换的时间=5*(1/5MHZ)=1us,所以1s中的采样次数=1s/1us=1MSPS,这就是1MSPS的由来。
触摸屏驱动
开发触摸屏驱动,最好的范例莫过于mc68328digi.c的实现。在没有看到原文之前,我把其中用到的结构解析一下。 1,struct ts_pen_info 该结构是触摸屏的核心数据结构。用户程序和驱动程序的交互就是通过该数据结构完成的。结构体里面的x,y坐标和状态是gui中事件驱动的原始数据源。 2,环形队列 gui程序通过read完成对ts_pen_info的提取。而在
touch panel 触摸屏基础知识
触摸屏,touch panel,导电薄膜,氧化钛,AZO等技术电阻式,电容式,表面电容式,红外式等
WinCE下Touch Panel驱动介绍
WinCE中的Touch Panel驱动是由GWES模块来管理的,Touch Panel驱动接收用户的触摸信息,并将其转换为屏幕上的坐标信息,传给GWES模块。在WinCE中,Touch Panel驱动是分层的,分为MDD层和PDD层,这和其他WinCE设备驱动是一样的。MDD层由微软提供,用户只需要实现MDD和PDD层间的DDSI函数就可以了。如图 WinCE中的GW
支持触摸屏的WINCE镜像
支持触摸屏的WINCE镜像(I386架构)
Touch触摸屏驱动PanelKit
Touch触摸屏驱动PanelKit,市面上常用的触摸屏都可以使用此驱动程序。
如何用Labview开发WinCE触摸板程序
图1 安装Windows CE系统的平板电脑 这几年安装Windows CE系统的平板电脑开始在工控行业里普及。用VS2005/VS2008开发Windows CE系统的应用程序可以像开发PC机的应用程序一样。现在我们还可以选择LabVIEW开发Windows CE系统的应用程序。这样我们就可以很容易开发出漂亮而且专业的界面。如仪表,波形显示等。Labview 2009安装和激活Touch
多臂老虎机——入门强化学习
多臂老虎机(Multi-Armed Bandit,MAB)问题是强化学习的经典入门例子,也是理解探索与利用(exploration-exploitation)平衡的重要案例。
触屏LCD菜单:链表+交互设计全解析
本文介绍了一种基于链表结构的触屏LCD菜单实现方案。该方案通过双向链表结合树形结构存储菜单节点,支持动态增删和无限层级嵌套。每个菜单项分配独立触摸区域,通过坐标检测实现精准交互,并提供视觉反馈(高亮选中项)。文章详细阐述了数据结构设计、触摸区域计算、交互逻辑处理、界面绘制等核心实现方法,并给出了完整的代码示例和优化技巧(如触屏校准、滑动翻页等)。该方案具有动态扩展性强、交互精准、易于维护等特点,适用于需要复杂菜单交互的智能设备和工业控制终端。
VMware Workstation Pro 25H2 去虚拟化精简便携版完全指南
虚拟机技术在现代开发和测试环境中扮演着重要角色,但客户机系统常因暴露虚拟化特征而被特定软件识别为“虚拟机”,导致功能受限。同时,官方 VMware Workstation Pro 安装包体积大、安装流程繁琐,难以实现移动化部署。去虚拟化通过修改 VMX 配置、屏蔽 CPUID 特征、反射宿主机硬件信息等手段降低被检测概率;精简与便携则通过裁剪非核心文件和改用脚本注册服务,实现即解压即用的轻量化形态。这类改版方案特别适合临时环境搭建、敏感软件兼容测试以及构建随身开发环境。本文从虚拟化检测原理出发,系统梳理了
Zemax非序列模式微透镜阵列仿真:从建模到优化完整指南
光线追迹是光学系统仿真的核心技术,其原理基于几何光学与物理光学的光线传播模型,通过精确计算光线在光学元件中的折射、反射与散射路径,实现对系统性能的预测与评估。在微透镜阵列等复杂多通道光学系统中,传统序列模式因光线路径受限而难以准确模拟串扰与杂散光,非序列光线追迹技术则凭借其灵活的空间传播机制成为关键手段。该技术广泛应用于激光整形、光束匀化、3D传感及光场成像等领域,能够有效支持阵列结构设计与优化。Zemax非序列模式为微透镜阵列仿真提供了完整的建模、优化与公差分析流程,是光学工程师进行复杂系统设计的核心工具
wince触摸屏驱动
本文向您介绍WinCE中采用分层驱动程序结构实现的触摸屏驱动,包括对触摸屏驱动模型的讲解、触摸屏驱动程序的实现及接口实现等知识。 1.触摸屏驱动程序的模型 1.1 分层触摸屏驱动程序结构 本触摸屏驱动采用分层驱动程序结构,其驱动模型如下图所示,这种结构将驱动程序代码区分为上层模型设备驱动层(MDD),下层是依赖平台的驱动层(PDD)。其中MDD层通常无需修改就可以直接使用,该部分提供面向
Qt之QSqlTableModel:高效数据库操作与视图绑定的实战指南
本文深入探讨了Qt框架中的QSqlTableModel组件,它作为连接数据库与Qt视图的智能中介,能极大简化数据库的增删改查操作。通过实战代码演示,详细讲解了如何快速构建可编辑的数据表格、理解并设置关键的数据编辑策略(如OnManualSubmit),以及实现数据过滤、排序等高级功能。文章还提供了性能优化、事务处理及常见避坑指南,帮助开发者高效、稳健地开发数据库驱动的桌面应用。
WinCE触摸屏驱动(开发详解)
欢迎加入Wince技术讨论群QQ#326444254 本文向您介绍WinCE中采用分层驱动程序结构实现的触摸屏驱动,包括对触摸屏驱动模型的讲解、触摸屏驱动程序的实现及接口实现等知识。 1.触摸屏驱动程序的模型 1.1 分层触摸屏驱动程序结构 本触摸屏驱动采用分层驱动程序结构,其驱动模型如下图所示,这种结构将驱动程序代码区分为上层模型设备驱动层(MDD),下层是依赖平台的驱动层(
40岁从智驾转具身智能之路
我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。
ZYNQ PS裸机开发RS485
RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。
WinCE中触摸屏驱动开发详解
WinCE中触摸屏驱动开发详解 收藏 1.触摸屏驱动程序的模型 1.1 分层触摸屏驱动层序结构 本触摸屏驱动采用分层驱动程序结构,其驱动模型如下图所示,这种结构将驱动程序代码区分为上层模型设备驱动层(MDD),下层是依赖平台的驱动层(PDD)。其中MDD层通常无需修改就可以直接使用,改部分提供面向GWES的DDI的接口,而MDD通过指定的DDSI函数接口调用PDD,这就是我们通常驱动要
【Coze搞钱实战】14. 抖音直播间自动回复机器人实战教程:三小时搭建智能客服,互动率提升150%(保姆级无代码指南)
摘要:抖音直播间高频问题重复回复、观众互动不及时是运营痛点。本文针对新手和进阶用户,提供无代码的自动回复机器人搭建方案:新手1小时完成基础配置(Coze+抖音对接),进阶用户通过促销倒计时、粉丝分层、热点借势三大策略提升互动率150%。方案基于某女装直播间实测数据(日UV 5W+),所有工具免费获取,步骤拆解到分钟级,附避坑指南与效果验证(某案例互动率从8%升至20%),读者可直接套用配置模板,无需代码基础即可落地。
【电阻触摸屏】嵌入式Win CE 电阻触摸屏 驱动编程
转载自:http://blog.youkuaiyun.com/loongembedded/article/details/6683548 视频教程:http://download.farsight.com.cn/download/index.htm 课件:http://download.farsight.com.cn/download/pdf/...
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
wince7 屏幕控制_WinCE中触摸屏驱动开发详解
本文向您介绍WinCE中采用分层驱动程序结构实现的触摸屏驱动,包括对触摸屏驱动模型的讲解、触摸屏驱动程序的实现及接口实现等知识。1.触摸屏驱动程序的模型1.1分层触摸屏驱动程序结构本触摸屏驱动采用分层驱动程序结构,其驱动模型如下图所示,这种结构将驱动程序代码区分为上层模型设备驱动层(MDD),下层是依赖平台的驱动层(PDD)。其中MDD层通常无需修改就可以直接使用,该部分提供面向GWES的DDI的...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
WINCE6.0+S3C6410的触摸屏驱动
WINCE6.0+S3C6410的触摸屏驱动 类别:WINCE 驱动开发 ********************************LoongEmbedded******************************** 备注: MSPS(million samples per second)表示每秒采样百万次,是转换速率的单位,而转
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
【转载】WinCE触摸屏驱动
转载自:http://blog.youkuaiyun.com/loongembedded/article/details/6683548 备注: MSPS(million samples per second)表示每秒采样百万次,是转换速率的单位,而转换速率(conversion rate)是指完成一次从模拟量到数字量的AD转换所需要时间的倒数。我们知道S3C6410的ADC最大的A/D转换时钟频率...

1316



被折叠的 条评论
为什么被折叠?



