在前面使用DllImport去调用了公司祖传的PLC;坑也被坑了一下,但是总感觉还是基于祖传的Dll木有一点意思;毕竟就是一个数据的监控和开关量的控制;要是直接能用我的屌丝机控制一下就可以好好开(Z)心(B);毕竟前面咱也是玩过一点点Xamarin的,那就再次拾起来去玩耍一下吧;来看看最终咱实现的视频效果:

1、在CollectionView中通过绑定后台集合实现了单通道控制

<CollectionView ItemsSource="{Binding CurrentDataContext}"/>

2、CollectionView的ItemTemplate

<CollectionView.ItemTemplate><DataTemplate><StackLayout Orientation="Horizontal"><Label Text="{Binding ChannelID,StringFormat='D0-{0}'}" VerticalTextAlignment="Center" WidthRequest="45"/><Ellipse WidthRequest="20" HeightRequest="20" VerticalOptions="Center"Fill="{Binding OpenStatus,Converter={StaticResource OpenStatusToColorConverter}}"/><Switch OnColor="Gray" ThumbColor="White" HorizontalOptions="EndAndExpand"><Switch.GestureRecognizers><TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type vm:MainViewModel}},Path=SwitchChannelStatusCmd}"CommandParameter="{Binding .}"/></Switch.GestureRecognizers></Switch></StackLayout></DataTemplate>
</CollectionView.ItemTemplate>

3、结果在ItemTemplate中的Switch通过GestureRecognizers绑定后后台Command不起作用,最后通过命令实现

<Switch.Behaviors><behaviorsPack:EventToCommandBehavior EventName="Toggled"Command="{Binding Path=BindingContext.SwitchChannelStatusCmd,Source={x:Reference Name=MyMainPage}}" CommandParameter="{Binding}"/>
</Switch.Behaviors>

4、对于祖传的dll没有文档,只能用最笨的方式去抓包然后记录,归纳总结:

message = $ ":0010003{nID}00010002B{end}\r\n";

5、然后最简单UDP客户端

IPAddress  iPAddress  = IPAddress.Parse( ip );
IPEndPoint  iPEndPoint  = new IPEndPoint( iPAddress, port );
UdpClient  udpClient  = new UdpClient();
udpClient.Connect( iPEndPoint );
byte[] sendData = Encoding.ASCII.GetBytes( message );
‍

最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下,多谢您的支持!

Xamarin效果第十二篇之控制祖传PLC相关推荐

  1. Xamarin效果第十四篇之玩耍GIS

    最近再次拾起Xamarin然后也实现了祖传PLC控制和弹窗配置;这不又一次勾起来我想基于他玩玩原来一直玩耍的GIS,毕竟咱前面一直玩耍二维和三维的GIS相关的知识点;有兴趣的小伙伴可以翻翻我的历史文章 ...

  2. Xamarin效果第十五篇之自定义CheckBox

    在上一篇中使用Xamarin玩耍了GIS加载高德和百度;这不这两天又抽空完善了一下;自定义了一下CheckBox;来看看最终效果: 关于实现咱就是直接自定义ContentView: 后台无非就是一堆的 ...

  3. Xamarin效果第十六篇之GIS添加Mark

    在前面几篇文章中简单玩耍了一下在线和离线加载高德地图图层;今天再次完善一下添加Mark图层和展示详细信息弹窗;来看看最终效果: 添加Mark无非就是用了PictureMarkerSymbol: Pic ...

  4. Xamarin效果第十八篇之GIS中复合型Mark

    在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里: 1.关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓): https ...

  5. 【着色器实现HandDrawn简笔画抖动效果_Shader效果第十二篇】

    Shader "HandDrawn" {Properties{_MainTex ("Main Texture", 2D) = "white" ...

  6. matlab最优控制实验报告_第十二篇 章 用MATLAB解最优控制问题及应用实例 最优控制课件.ppt...

    第十二篇 章 用MATLAB解最优控制问题及应用实例 最优控制课件.ppt 综上所述可得结论:Q=diag(1,0,0),R=2时,系统各方面响应较好. 矩阵Q变大时,反馈矩阵变大: 当Q的对角线上第 ...

  7. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  8. CCIE-LAB-第十二篇-EIGRP+EIGRP末节区域+leak map+分发列表

    CCIE-LAB-第十二篇-EIGRP+EIGRP末节区域+leak map+分发列表 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译:1.确保分支3分支4 ...

  9. CCNA-第十二篇-STP+ACL(下)

    CCNA-第十二篇-STP+ACL(下) 首先说说要跳跳了 立个小FLAG, 两个月内急速完成CCIE理论+LAB实操 因为接了个工作,主要我能做到就能做这份工作. 其实NP中间的点很多都会,只是因为 ...

最新文章

  1. 工信部 学习类app_工信部整治APP侵权行为,私自收集个人信息等8类问题被点名...
  2. 机器学习中常用到的知识点总结
  3. datagridview cell字体大小自适应_CELL:肿瘤为何“饿不死”?神经元为饥饿胰腺癌提供营养支持...
  4. 怎么把本地的文件传给服务器,怎么把本地文件传给云服务器
  5. OpenStack Days走进北京 主角是用户
  6. 论文浅尝 | Data Intelligence - 多篇语义资源论文
  7. Python实践周 A卷 试题(不印刷)
  8. 初学Python之谈
  9. Windows 10如何强制删除多余的语言包
  10. pylint警告: An attribute defined in json.encoder line 158 hides this methodpylint(method-hidden)
  11. php 7 中对数值 * 100 出现很多小数_PHP快速入门第二讲:数据类型
  12. C++之lock_guard和unique_lock自动加解锁区别
  13. 区块链应用如何实现资金盘分红
  14. 堆排序代码详解(Java实现)
  15. 5.css企业开发经验,习惯盒模型,层模型
  16. 键盘拆开重新安装步骤_键盘拆卸后怎么安装?
  17. python画正弦函数_python中怎么用matlibplot画正弦曲线
  18. 惠普HPE服务器升级iLO4固件版本
  19. C语言可变参数问题(va_list,va_start,va_arg,va_end用法及定义)
  20. 《大数据时代》(维克托·迈尔·舍恩伯格)读书笔记

热门文章

  1. Swift - 自定义单元格实现微信聊天界面
  2. SAP MM 采购订单收货被取消了还是不能增加新的delivery cost!
  3. 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)
  4. mysql表空间被占用,同名表无法创建或导入
  5. jQuery的.live()和.die()
  6. 联想ThinkPad笔记本广告向苹果MacBook Air开战
  7. 中外计算机百科知识,计算机百科知识.doc
  8. jsp调用controller方法_RPC调用_服务注册与发现
  9. 报表引擎 - 数据模型
  10. Python 循环删除指定文件夹下所有的.longtian类型文件