- 博客(26)
- 收藏
- 关注
原创 Python的tkinter如何把日志弄进文本框(Text)
总之,用tkinter设计程序界面时,若要让日志显示在文本框中,首先要通过几句代码临时修改系统输出的数据流。然后,要将数据流的内容写进文本框。文本框光标可用于只提取最新的几行日志,这样更新文本框时,只需把新内容附在最后,无需全部删除重新赋值。
2024-11-23 18:13:41
1392
原创 用python中的tkinter包实现进度条
python中的tkinter包是一种常见的设计程序的GUI界面用的包。本文主要介绍这里面的进度条(Progressbar)组件的常用用法。
2024-11-16 20:39:13
1673
原创 期望值为无穷大的博彩游戏,真的花多少钱玩都值得吗?
即使是期望奖金为无穷大的游戏,玩家也并不是花多少钱都愿意玩的。原因在于出现很大收益的可能性很小,期望现象是在玩了很多次后总收益才会超过一定的值,而玩家并不会愿意玩很多次。而且即便如此,这个期望的收益仍有很大可能性被“辜负”。
2024-10-13 23:50:11
1132
原创 伯努利分布(Bernoulli distribution)的两次成功之间间隔次数的分布
伯努利分布(Bernoulli distribution)是一种特殊的二项式分布,即0-1分布。百科上已经说明了这种分布,即,其中。其数学期望为,方差为。详细说明见本文进一步说明对于这类分布的事件,两次出现1之间的间隔的分布。对于泊松过程,两次事件之间的概率符合指数分布。但对于符合伯努利分布的事件,例如抛硬币实验,在一次抛出正面后,下一次抛出正面前抛出了反面的次数的分布也符合指数分布,但和泊松过程的指数分布不完全相同。
2024-10-13 21:37:38
640
原创 用Arduino单片机制作一个简单的音乐播放器
Arduino单片机上有多个数字IO针脚,可以输出数字信号,用于驱动发声器件,从而让它发出想要的声音。蜂鸣器是一种常见的发声器件,通电后可以发出声音。因此,单片机可以通过数字输出控制蜂鸣器发出指定的声音。另外,Arduino支持串口的通信方式,可以从电脑上接收数据,根据收到的数据确定所需发的声音。本文说明用上述方式如何通过Arduino单片机实现一个简单的音乐播放器。
2024-10-07 18:15:14
3823
原创 程序传入单片机的过程,以Avrdude为例分析
在市场上有各式各样的单片机,例如Arduino,51单片机,STM等。通常,我们都用其对应的IDE软件进行单片机的编程。这些软件既负责将程序代码转写成二进制代码,即机器语言,也负责将该二进制代码导入单片机。与此同时,有一个开源软件,叫做Avrdude,可以将二进制代码程序写入各个品牌的单片机中。该项目在Github上,支持Windows、MacOS、以及以Linux为内核的系统。
2024-10-06 11:45:32
2097
原创 用Arduino单片机读取PCF8591模数转换器的模拟量并转化为数字输出
I2C是一种串口通信方式,使用SCK和SDA两根线进行通讯。使用该通信方式的两个设备有主站和从站之分。主站启动通讯,发送从站地址,以及一个读/写比特。如果发出的比特是0,即写,那么主站就继续向从站发送数据;如果主站发出的读/写比特是1,即读,那么就是由从站向主站发送数据,主站读取数据。具体的通讯过程,见[4]。在该实验中,Arduino单片机是主站,PCF8591是从站。用Arduino,可以通过I2C串口和PCF8591模数转换器交互,读取模拟量。
2024-10-03 21:45:17
2710
原创 Lua语言中函数的二进制码保存与查看
在Lua编程语言中,函数(function)和表(table)、线程(thread)等一样,都是变量。而函数,本质上就是一个程序,所以是可以以二进制码的形式表达的。本文介绍如何在Lua中把函数以二进制码进行保存,如何查看保存的二进制码,如何将保存的二进制码重新转换成函数,以及该功能的用处。
2024-10-02 18:09:17
1423
原创 PYTHON实现HTTP request的一些有用的函数
我们知道,当需要设计一个程序和服务器进行交互时,往往会用到HTTP的request,即服务器有一个对外接口REST API,因此当向服务器发送符合格式要求的HTTP request时,服务器会给出响应,甚至执行一些任务。如需了解详情,请阅读。PYTHON是一种常见的编程语言,可以发送HTTP request,并接受从服务器中得到的反馈。博客中说明了一种使用PYTHON发送HTTP request并接受反馈数据的方法。当然,也可以使用JAVA,Swift,C#,Javascript等编程语言实现类似功能。
2024-10-02 12:09:46
1454
原创 ModbusTCP通讯错误的排查
对于ModbusTCP通信中出现的错误,建议通过NetAssist等网络调试软件研究具体的报文,发现错误。首先要确保报文是HEX即16进制格式;另外,要注意ModbusTCP的从站除了IP地址和端口号外,还有设备号,不一定为1;对于寄存器,也包括离散输入和线圈,要考虑不同的PLC可能的地址偏移,即设备内存地址和ModbusTCP地址的偏移。
2024-09-22 21:04:57
4580
原创 PLC通信协议的转化
首先,Codesys是一种国际通用的工业自动化领域的编程系统,支持IEC 61131-3标准的PLC编程语言[1]。这里主要使用ST语言进行可编程网关的通信协议转换程序设计。例如,可编程网关可以通过Modbus得到PLC的一些变量的值,然后将这些值嵌套在通过CanOpen发出的PDO报文中的规定位置,使得CanOpen主站的控制器可以得到PLC里的数据信息;当然,可编程网关也可通过CanOpen接收到控制器发出的报文,从收到的PDO中提取出数值,并将数值通过Modbus传递给PLC。
2024-09-20 23:49:03
1465
原创 SwiftUI里的ForEach使用的注意事项
在SwiftUI中,输入ForEach的数据集里的元素必须Identifiable,即有独一无二的id属性。如果数据本身没有这样的属性,则需要通过函数的id参数自定义属性。
2024-09-16 21:53:26
1877
原创 Swift里的数值变量的最大值和最小值
对于Swift里的数值类型的变量,可以通过其类的自带静态属性找出最小值和最大值。对于整数型变量,一旦越过最值,就会报错;但对于小数型变量,即使越过最值也不会报错,而是会用特殊的方法计算。另外,常态数和非常态数的区别在于精度。
2024-09-16 17:43:17
1770
原创 微信小程序的多级选择器(multiSelector模式的Picker)如何设计出各列之间的可选项有关联的逻辑?
对于多级选择器,如需实现多级联动,即各列之间的可选项有关联的逻辑,应当使用bindcolumnchange事件,当某列的选择有了变化,无需确认,就对整个多级选择器的可选项进行改变。
2024-09-15 17:41:01
2409
原创 Tkinter界面设计的复选框(Checkbutton)的补充介绍
众所周知,Python提供很多种图形界面(GUI)设计的库,其中最常见的库之一是tkinter模块,它是 Python 的标准 Tk GUI 工具包的接口[1]。Tkinter库给用户提供了各种各样的组件,网站[2]介绍了这些组件的用法。但复选框(Checkbutton)组件[3]介绍的内容较少,所以本文对该组件的介绍做一些补充。网页[3]中使用了以上代码介绍Checkbutton, 即复选框的参数。其中text是复选框的标记文字,command是该复选框被点按后触发的函数,variable。
2024-09-09 22:21:33
1553
原创 Swift初步入门
本文介绍苹果Apple公司开发的Swift编程语言,帮助感兴趣但尚未接触Swift编程语言的人初步了解它。主要介绍Swift里的一些基本语句及其功能和规则。
2024-09-07 22:23:29
1940
原创 PLC用SR函数块实现单按钮自锁功能
在PLC梯形图编程中,若要通过SR函数块实现按钮自锁模式逻辑,需要把线圈(Coil)和触点(contact)互用,且触点应使用P触点。另外,可以通过初始函数让输出值默认为1,但除此之外,在SR函数块的S输入中,还应增加一个涉及线圈值以及常闭触点的逻辑。
2024-09-07 12:16:46
2483
原创 直线是穿过顶点,还是切过顶点?
用射线法判断点是否在多边形内,如果出现射线刚好经过多边形的顶点的情况,则应对该顶点和相邻的点构成的折线进行研究,判断射线/直线是否穿过该折线,还是和该折线相切,抑或和该折线共线。若穿过,则计数;若相切,则不计数;若共线,则忽略该边。判断是穿过还是相切或共线,本质上是判断顶点的邻边,邻顶点是否在射线/直线的同侧或异侧。可以用解析几何判断,也可以用向量法判断。
2024-08-31 17:01:28
1332
原创 Swift编程语言中闭包(closure)的使用
这里以一个简单的判断两个数值大小的闭包为例注意:此处的闭包无需声明类型,因为.sorted函数已经可以确保输入的闭包的类型了。闭包(Closure)是一种函数,但它也是一个常量/变量,可以以更简易的方式定义。可以作为参数输入函数,而以尾随(Trailing)方式写出的代码更易读。与此同时,闭包还有捕获(Capture)变量数值的功能。
2024-08-25 00:31:41
1139
原创 电脑的可启动盘的两种不同类型:实时与非实时
本文以一个问题开头:当一台笔记本电脑插入写入从微软官网上下载的Windows 10/11的iso镜像的U盘,并从U盘启动后,笔记本电脑并不是直接在U盘上运行Windows,而是引导用户把Windows安装在电脑的硬盘上。但是,对于树莓派电脑,当插入写入从树莓派官网上下载的Raspberry Pi OS的iso镜像的sd卡后,树莓派电脑会直接启动系统,不经过安装步骤。为什么?
2024-08-24 18:16:19
950
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人