<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iamtsfw的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/iamtsfw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; iamtsfw]]></copyright><item><title><![CDATA[小记:把react项目从web迁移到electron]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/148666182</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/148666182</guid><author>iamtsfw</author><pubDate>Sun, 15 Jun 2025 09:38:41 +0800</pubDate><description><![CDATA[使用vite构建,包含了react react-router-dom tailwindcss mui  主副进程通讯。routemain.jsx 路由定义文件。company.jsx 示例文件。终端里:npm install。解压后使用vscode打开。然后npm run dev。home.jsx 主页文件。main.jsx 启动文件。windows系统计算机。]]></description><category></category></item><item><title><![CDATA[学习记录: 使用react-router-dom]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/148522298</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/148522298</guid><author>iamtsfw</author><pubDate>Mon, 09 Jun 2025 07:51:27 +0800</pubDate><description><![CDATA[假设有一个vite创建的react项目,先npm install react-router-dom.这是一个简单的定义路由,导航到某个页面,在导航到的页面接收参数的过程.那么在npm run dev后,将率先显示<Login />组件。在<Login />组件中,在<Home />中。]]></description><category></category></item><item><title><![CDATA[为什么需要在循环里fetch?]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/148128412</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/148128412</guid><author>iamtsfw</author><pubDate>Thu, 22 May 2025 07:58:30 +0800</pubDate><description><![CDATA[假设有多个设备连接在后端,数量不定,需要按个读回状态,那么就要在循环里fetch了.此函数非常好用,来自于国内一个作者,时间久了,忘记了来源,抱歉.]]></description><category></category></item><item><title><![CDATA[记录:express router,可以让node.js后端文件里的路由分布的更清晰]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/148128179</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/148128179</guid><author>iamtsfw</author><pubDate>Thu, 22 May 2025 07:49:03 +0800</pubDate><description><![CDATA[把server.js里的路由分到多个文件里处理,将使得主文件更清晰,查找路由更方便.fetchWithTimeout用于在循环里fetch,闲下来时作为另一个话题写.将自动由后端的measureRouter.js处理。将自动由后端的commRouter.js处理。]]></description><category></category></item><item><title><![CDATA[从头实现react native expo本地生成APK ]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/148096748</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/148096748</guid><author>iamtsfw</author><pubDate>Tue, 20 May 2025 22:06:31 +0800</pubDate><description><![CDATA[上方选择SDK52,然后选择 Android Emulator 后面的install,在出现窗口里点download就把expo go的apk下来了.可以打开expo go,选择Scan QR Code来在手机上显示你的应用程序.如果提示升级expo,会有链接告诉你如何升级packge.json里的expo.1 按w在浏览器里查看,只要浏览器支持,我们就在浏览器里工作,仅仅当浏览器不支持你的程序的某项功能时再使用expo go客户端扫描上方你的二维码来在手机上查看效果(苹果手机不了解,与此操作不同).]]></description><category></category></item><item><title><![CDATA[学习总结(二) node.js服务器如何使用net模块向硬件发送命令与接收数据?]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/132487847</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/132487847</guid><author>iamtsfw</author><pubDate>Fri, 25 Aug 2023 09:20:55 +0800</pubDate><description><![CDATA[/断开与485转网络模块的连接。client.on("data", function (data) {                                     //当收到数据时。return res.send({ result: Array.from(data), type: 1 })   //将收到的数据与设备类型发送至请求方。client.connect(网络模块端口, 网络模块Ip, () => {    //此模块需要设置好波特率等通讯参数。//此模块用于tcp/ip通讯。]]></description><category></category></item><item><title><![CDATA[学习总结(一) 需要解决的问题]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/132487550</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/132487550</guid><author>iamtsfw</author><pubDate>Fri, 25 Aug 2023 08:52:27 +0800</pubDate><description><![CDATA[为了实现浏览器不管设备种类仅仅发送同样命令,需要在服务器做配置文件,服务器根据收到的设备号码,查找设备类型,从而向不同类型设备发送命令,并将结果以及设备类型返回浏览器,由浏览器根据返回的结果与设备类型自己去做解析,防止占用服务器过多时间.我们有两种设备,一种是485转网络模块下连接无数设备,每个设备有自己的编号,另一种是自家的mqtt服务器下连接了无数设备,每个设备有自己的编号.一直思考怎么做,直到某一天看到有人将硬件连接了485转网络模块才恍然大悟,原来这样也可以啊.]]></description><category></category></item><item><title><![CDATA[学习总结:如何将直接控制串口的软件改为浏览器版的?]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/132487503</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/132487503</guid><author>iamtsfw</author><pubDate>Fri, 25 Aug 2023 08:23:59 +0800</pubDate><description><![CDATA[经过一段时间的学习,不管实现的笨拙不笨拙,不管还不会部署,算是勉强实现了我们的需求,为了避免遗忘,同时也为有此需求的人提供一点思路,我把关键点分若干步记录下来.项目需求:将原本的C/S版串口测温软件改为B/S版测温软件.这样的形式慢慢发布出来,同时,欢迎提出意见.学习总结(二) ...学习总结(三) ...将以学习总结(一) ...]]></description><category></category></item><item><title><![CDATA[全栈开发学习记录：一个简单的node.js服务器以及用到的表、视图、存储过程和配套测试的前端.]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/127946875</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/127946875</guid><author>iamtsfw</author><pubDate>Sun, 20 Nov 2022 12:18:18 +0800</pubDate><description><![CDATA[从认知全栈开发到底是什么后,又学习了很久,最终写出了这么一个简单的node.js服务器以及配套前端测试,由于学习的还不够深入,路由那块与fetch那块做的不好,只能勉强跑起来,希望在学习深入后重新完善,特此记录.此node.js服务器实现如下功能:1 用express快速建立服务器2 在node.js中连接sql server3 增(POST)删(DELETE)改(PUT)查(GET)例子,增删改查时皆调用sql server存储过程。]]></description><category></category></item><item><title><![CDATA[全栈开发学习记录：什么是全栈开发？]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/127315095</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/127315095</guid><author>iamtsfw</author><pubDate>Fri, 14 Oct 2022 10:48:51 +0800</pubDate><description><![CDATA[个人认为：全栈开发简单来说就是前端软件与后端软件都是由同一个人写的。

这个所谓的同一个人需要具有以下知识储备：

写前端软件时：

会html，因为要利用html控件建立网页框架。

会css，因为要利用css美化网页。

会javascript，因为要利用javascript向后端请求数据以及操纵网页内控件。必须掌握异步编程，因为数据不会马上回来，尽量使用async与await进行异步编程，我发现这个最简单易用，比promise的链接then好看好理解。

写后端软件时：

会node.js(可再加ex]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发-杂项 多列的列表与数据库的增加 修改 删除]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/113623614</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/113623614</guid><author>iamtsfw</author><pubDate>Thu, 04 Feb 2021 09:29:43 +0800</pubDate><description><![CDATA[需求:数据库中有多行,每行有多列,需要能够增加 修改 删除.

实现:扩充以前的例子(带图像的列表),然后添加对数据库的操作,因为一直使用ADO,所以选用了相似的方法来操作数据库.



初始活动启动后显示如下:



向左滑动,活动显示如下:





初始启动活动中主要完成的工作为:

1启动时查找xxx.db文件,如果没有这个文件就创建它,并创建存储数据的表.

2如果存在xxx.db文件,就打开表,并用表中数据填充列表,select * from表名

点 1号仓那行后,接下来的活动是要修...]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发-杂项 服务]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/113367734</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/113367734</guid><author>iamtsfw</author><pubDate>Fri, 29 Jan 2021 11:02:01 +0800</pubDate><description><![CDATA[目标:

单击开始自动刷新按钮,每5秒自动刷新设备状态

实现:

正好学到了服务,所以不在本活动中实现,而是利用服务实现,从而学习巩固以下两个知识点:一定时二服务.

完整的服务类代码:

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System...]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发-杂项 创建通知 notifation]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/113256596</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/113256596</guid><author>iamtsfw</author><pubDate>Wed, 27 Jan 2021 17:21:04 +0800</pubDate><description><![CDATA[三天,测试了好多网上的示例,均失败,最终在StackOverflow找到了能够成功运行的示例,做了精简后如下:

重点在于新增的NotificationChannel

    private void btnTestNotifyAgain_Click(object sender, System.EventArgs e)
    {

      NotificationManager notificationManager = NotificationManager.FromC...]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发-杂项   计算包含数字以及非数字的数组的最大最小平均值]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/113245814</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/113245814</guid><author>iamtsfw</author><pubDate>Wed, 27 Jan 2021 12:33:08 +0800</pubDate><description><![CDATA[//需要获取最大最小平均值的数组         //结果数组仅仅包含三个元素
    public static void GetMaxMinAvgValue(string [] TempArray,                                     string[] arrResult )
    {
        if (TempArr...]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发-杂项 挑选列表中重复数据以及它们的记录数量]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/113245720</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/113245720</guid><author>iamtsfw</author><pubDate>Wed, 27 Jan 2021 12:26:28 +0800</pubDate><description><![CDATA[假设有一个string列表lstTemp,包含的数据为:
2021-01-01
2021-01-01
2021-02-01
2021-03-01
2021-03-01
2021-03-01
想要实现如下效果
2021-01-01 记录数:2
2021-02-01 记录数:1
2021-03-01 记录数:3
1 将原始列表中数据消除重复后送入临时列表
2 循环临时列表,在原始列表中查找临时列表中每项的个数
3 将临时列表中的每项以及每项的个数送入结果列表
如下语句用于实现这个效果:
using System]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发08 用ScrollView HorizontalScrollView GridLayout实现大量数据的行列显示]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/112920342</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/112920342</guid><author>iamtsfw</author><pubDate>Thu, 21 Jan 2021 11:59:03 +0800</pubDate><description><![CDATA[两个布局文件

GrainResult.xml

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  android:id="@+id/SV"
  ...]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发07 实现一个带图像与文本的列表]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/112919401</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/112919401</guid><author>iamtsfw</author><pubDate>Thu, 21 Jan 2021 11:47:44 +0800</pubDate><description><![CDATA[网上的源代码通常都是JAVA实现的,以下是用C#实现的

新建两个类

using Android.App;
using Android.Content;
using Android.Content.Res;
using Android.OS;
using Android.Runtime;
using Android.Support.V7.Widget;
using Android.Views;
using Android.Widget;
using System;
using System.Collect]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发06 让主Activity上的内容根据其他Activity上控件的选择而改变]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/111885318</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/111885318</guid><author>iamtsfw</author><pubDate>Tue, 29 Dec 2020 11:40:29 +0800</pubDate><description><![CDATA[我的要求很简单,主Activity启动后,显示以前选择的仓房名称,再启动选择当前仓房的Activity,在新Activit的下拉框中选择某个仓房名称,结束返回,主Activity显示的仓房名称随之改变.

第一种尝试:

在主Activity

StartActivityForResult

还在主Activity定义了OnActivityResult

在其他Activity调用了

SetResult

Finish

调试了好久,试用了查到的全部方法,OnActivityResult没有任何调用的迹象]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发05  本地文件的读写]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/111871613</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/111871613</guid><author>iamtsfw</author><pubDate>Mon, 28 Dec 2020 18:16:45 +0800</pubDate><description><![CDATA[将平板无线连接到一个路由器,手机无线连接到同一个路由器,测试App,彻底通过,所以线路测试告一段落了…
两个函数的使用场合如下:
进行数据检测前,需要获取想要检测的平板的ip与平板监听端口.
1 调用读函数,如果返回字符串"NULL",说明没有设置当前平板,则转到设置当前平板的视图,让客户做当前平板选择,当客户选择某一个当前平板后,调用写函数将此平板参数数据写入到本地文件中.
2 再回到检测界面就能读当前平板参数数据了.
[客户选择当前平板是从一个asset文件中读取多行平板参数信息,这些信息是打包前写好的]]></description><category></category></item><item><title><![CDATA[学习记录:Visual Studio 2019中使用C#进行Android开发04 局域网环境测试App]]></title><link>https://blog.youkuaiyun.com/iamtsfw/article/details/111604140</link><guid>https://blog.youkuaiyun.com/iamtsfw/article/details/111604140</guid><author>iamtsfw</author><pubDate>Thu, 24 Dec 2020 09:31:47 +0800</pubDate><description><![CDATA[局域网内连接一个平板,平板设置固定Ip(使之无法连接宽带)后,运行一个小程序,监听一个固定端口,当收到合适数据时,返回数据

笔记本设置固定ip(使之无法连接宽带),运行vs2019,打开03节中项目,修改ip指向平板,运行模拟器,做同样测试.

结果是通过.

那么我就可以假设当一个具有固定ip的平板连接到一个路由器下,持手机走到此路由器附近,连接到此路由器上,手机与平板都具有相同的Ip段,进行测试,应该能够通过测试.

接下来,就继续测试App收到多达400个数值后如何进行显示了.

随着一个个问题的解]]></description><category></category></item></channel></rss>