锁定网站导航栏,中国企业500强名单公布,网址谁有给我一个,网站开发毕设文献手机组态软件 APP监控西门子S7-1200 PLC C#全套源代码 1#xff0c;C#开发上位机手机APP#xff0c;自己写的程序可提供部分 2#xff0c;通过VS2019开发安卓手机app 3,全套源代码#xff0c;admin #xff0c;123456 4#xff0c;手机组态软件无线WiFi与PLC通信…手机组态软件 APP监控西门子S7-1200 PLC C#全套源代码 1C#开发上位机手机APP自己写的程序可提供部分 2通过VS2019开发安卓手机app 3,全套源代码admin 123456 4手机组态软件无线WiFi与PLC通信想在手机上实时监控S7-1200 PLC的状态这活儿用C#就能干我叼着咖啡杯把手在VS2019里噼里啪啦敲着Xamarin的代码。手机组态软件开发最带劲的地方就是能把工业控制场景装进裤兜里带着走。先整点硬核的通信代码。S7-1200的协议得用S7.Net这个NuGet包手机端和PC端通用// PLC连接核心代码 var plc new Plc(CpuType.S71200, 192.168.1.10, 0, 1); await plc.OpenAsync(); // 读取DB1中的布尔量 var status plc.Read(DB1.DBX0.0); txtStatus.Text status ? 运行中 : 待机状态;这段代码里的门道在于CpuType要选对型号IP地址得和PLC的Profinet配置一致。遇到过最坑的情况是手机WiFi和PLC不在同一网段那叫一个抓狂。手机组态软件 APP监控西门子S7-1200 PLC C#全套源代码 1C#开发上位机手机APP自己写的程序可提供部分 2通过VS2019开发安卓手机app 3,全套源代码admin 123456 4手机组态软件无线WiFi与PLC通信登录模块得整个像样的界面虽然用户给了admin/123456的默认账号但咱得做点安全措施!-- Xamarin安卓端的登录布局 -- EditText android:idid/txtUsername android:hint工号/手机号 android:inputTypetextPassword|textVisiblePassword/ EditText android:idid/txtPassword android:hint密码 android:inputTypetextPassword/ Button android:text进入车间 android:clickbtnLogin_Click/注意那个textVisiblePassword属性调试时能看到输入内容正式发布前记得删掉。密码存储别直接用明文的123456至少要做个SHA1哈希// 密码验证逻辑 var hashedPwd ComputeSHA256(123456); if(inputPwdHash hashedPwd) { Navigation.PushAsync(new DashboardPage()); } else { DisplayAlert(警告, 老师傅密码该换了, 知道啦); }数据交互部分有个骚操作——用JSON格式缓存PLC状态。当WiFi信号不稳时APP能显示最后一次有效数据// 带缓存功能的数据读取 try { var currentData await plc.ReadBytes(DataType.DataBlock, 1, 0, 10); File.WriteAllText(cachePath, JsonConvert.SerializeObject(currentData)); } catch(S7Exception ex) { var lastData JsonConvert.DeserializeObjectbyte[](File.ReadAllText(cachePath)); UpdateUI(lastData); }调试时发现个坑安卓9.0以上系统默认禁用明文传输。要么上HTTPS要么在AndroidManifest.xml里加android:usesCleartextTraffictrue不过生产环境建议还是走加密通道。整套源码里最得意的是报警推送功能。当PLC触发异常时手机能收到像微信那样的悬浮通知// 安卓通知管理 var alarmManager (NotificationManager)GetSystemService(NotificationService); var channel new NotificationChannel(alarm_channel, 设备告警, NotificationImportance.High); alarmManager.CreateNotificationChannel(channel); var notification new Notification.Builder(this, alarm_channel) .SetContentTitle(PLC温度预警) .SetSmallIcon(Resource.Drawable.emergency_icon) .SetVibrate(new long[] { 0, 1000, 500, 1000 }) // 震动节奏 .Build(); alarmManager.Notify(0, notification);实测发现不同品牌的安卓机对后台服务的限制差异很大小米得单独设置电池优化白名单华为要允许应用自启动。这些细节在源码的README.md里都做了特别标注。最后说个真事有次在客户现场调试手机APP死活连不上PLC。折腾两小时才发现是车间WiFi的DHCP把IP池用完了——PLC的固定IP被路由器分配给了保洁阿姨的智能手机。所以源码包里专门加了个IP冲突检测工具这事教会我工业无线通信不仅要懂编程还得会修路由器。