查看: 4592|回复: 7

[讨论] Windows 10 IoT方案:如何为每个UWP程序都实现触屏?

[复制链接]

签到天数: 46 天

连续签到: 1 天

[LV.5]常住居民I

64

主题

321

积分

78

支持

IoT物联网技术组

Rank: 6Rank: 6

积分
321

发表于 2016-3-25 17:57:58 | 显示全部楼层 |阅读模式

马上注册,享受积分奖励和更多功能,让您轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 士官长 于 2016-3-25 18:11 编辑

image.png

你是不是发现,如果要实现触屏的话,要么在触摸屏那里动刀,拆开 FPC 一堆麻烦事。在目前 Windows 10 IoT Core 系统中,还是没法直接驱动触摸屏的,而不像树莓派的Linux系统那样直接可以使用。其实,你只要为每个 UWP 程序增加一个关于触摸屏驱动的代码,你就能控制了。当然,我这里完成的只是一小部分,更多的是需要大家一起讨论分享。

如果你也遇到这样的烦恼,不妨我们一起来研究更加简单方便的实现触摸屏控制,以脱离键盘鼠标的控制。

触摸屏类型:5英寸800x480 LCD电阻式触摸显示屏

你需要以下:

  • TSC2046 touch screen controller(建议某宝买买买)
  • 用于Touch Screen 的更改控制
  • 基于XAML的校准程序

读懂以下代码,并运用。

[C#] 纯文本查看 复制代码
TouchPanels.Devices.Tsc2046 tsc2046 = await TouchPanels.Devices.Tsc2046.GetDefaultAsync();

try
{
    await tsc2046.LoadCalibrationAsync("TSC2046");
}
catch (System.IO.FileNotFoundException)
{
    //Initiate calibration if we don't have a calibration on file
    var calibration = await TouchPanels.UI.LcdCalibrationView.CalibrateScreenAsync(tsc2046);
    tsc2046.SetCalibration(calibration.A, calibration.B, calibration.C, calibration.D, calibration.E, calibration.F);
    await tsc2046.SaveCalibrationAsync("TSC2046");
}

//Load up the touch processor and listen for touch events
processor = new TouchPanels.TouchProcessor(tsc2046);
processor.PointerDown += Processor_PointerDown;
processor.PointerMoved += Processor_PointerMoved;
processor.PointerUp += Processor_PointerUp;

如果你还没有校准程序,那么接下来你需要先校准。如下图:

image (2).png

读懂以下代码,你可以将代码放到你的UWP程序,然后实现触摸点击事件。

[C#] 纯文本查看 复制代码
private void Processor_PointerDown(object sender, TouchPanels.PointerEventArgs e)
{
    FindElementsToInvoke(e.Position);
}
private void FindElementsToInvoke(Point screenPosition)
{
    var elements = VisualTreeHelper.FindElementsInHostCoordinates(new Windows.Foundation.Point(screenPosition.X, screenPosition.Y), this, false);
    foreach (var e in elements.OfType())
    {
        var element = e;
        AutomationPeer peer = null;
        object pattern = null;
        while (true)
        {
            peer = FrameworkElementAutomationPeer.FromElement(element);
            if (peer != null)
            {
                pattern = peer.GetPattern(PatternInterface.Invoke);
                if (pattern != null)
                {
                    break;
                }
            }
            var parent = VisualTreeHelper.GetParent(element);
            if (parent is FrameworkElement)
                element = parent as FrameworkElement; //Walk up the tree
            else
                break;
        }
        if (pattern != null)
        {
            var p = pattern as Windows.UI.Xaml.Automation.Provider.IInvokeProvider;
            p?.Invoke();
        }
    }
}


视频演示:



附件下载以上过程所需要的代码!你可以参考使用。(了解更多

WindowsIoT.TouchSample.zip (58.78 KB, 下载次数: 59)

签到天数: 16 天

连续签到: 2 天

[LV.4]偶尔看看III

2

主题

71

积分

10

支持

发表于 2016-3-25 18:23:50 | 显示全部楼层
前排支持,这个开发人员应该用的上!
[你知道吗]:

签到天数: 226 天

连续签到: 1 天

[LV.7]常住居民III

11

主题

823

积分

65

支持

微软核心粉丝先锋-WM10-950

发表于 2016-3-30 22:31:59 来自手机 | 显示全部楼层
感谢分享

来自:Lumia 950 Win10新机-智机社区客户端
[你知道吗]:

签到天数: 215 天

连续签到: 1 天

[LV.7]常住居民III

9

主题

450

积分

20

支持

发表于 2016-4-19 13:10:53 来自手机 | 显示全部楼层
感觉好高端大气上档次啊

来自:ATIV SE Verizon-智机社区客户端

该用户从未签到

0

主题

5

积分

0

支持

发表于 2017-1-22 14:35:43 | 显示全部楼层
不能用啊,我也有这个屏幕,但是现实的是白屏。
[你知道吗]:

该用户从未签到

0

主题

101

积分

0

支持

发表于 2017-1-25 10:11:19 | 显示全部楼层
我买了微雪的IPS电容屏,发现除了按钮用PRESS方式可以实现点击操作,其他的UI控件虽然响应了操作,但无法产生操作事件!

签到天数: 86 天

连续签到: 1 天

[LV.6]常住居民II

23

主题

296

积分

13

支持

开发之神

Rank: 6Rank: 6

积分
296

微软MVP

发表于 2017-2-1 13:00:59 | 显示全部楼层
支持楼主,好像在10586中可以支持触屏了。
对了,楼主的IoT Core版本号是什么?另外,config.txt的文件中修改max_usb_current=1了吗?
[你知道吗]:

该用户从未签到

0

主题

2

积分

0

支持

发表于 2017-3-15 13:18:32 | 显示全部楼层
uykfyukyfudkdukiduykduykfuyktuk 放入已开发一款衣服木iyu
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • WP10论坛

    智机社区
  • WP10软件

    应用推荐
  • APK云端转制

    APK云端转制
  • 智机网微博
    [email protected]
  • 智机网微信

    微信公众号
         

网站地图| 小黑屋|京ICP证150706号|京B2-20160045| 京公网安备11010802018258号

Powered by Discuz! X3.2 / Copyright 2010-2017 © 智机网 WFUN.COM Inc. All rights reserved.

快速回复 返回顶部 返回列表