发动态
综合 最新发布 最新回复
图文
列表
置顶
HDI高密度互连板正式上线
这几天折磨死我了,因为这玩意我也是自己在琢磨,然后资料也没有多少,简直就是自己慢慢摸索。 本期介绍如何利用TCP接收图片信息并显示。 首先我们先新建一个类,将我们想要的内容全部写到这个类上(类的代码会放在最后面) cpListener用来创建监听,tcpClient用以发送。public AndroidWifiService() { } ~AndroidWifiService() { tcpClient?.Close(); tcpClient = null; tcpListener = null; MessageReceived = null; } public AndroidWifiService(IPAddress address,int Port) { StartListening(address, Port); } public AndroidWifiService(string address, int Port) { StartListening(IPAddress.Parse(address), Port); } 提供三种类型的构造函数和析构函数。protected virtual void OnMessageReceived(byte[] buffer) { // 触发事件 MessageReceived?.Invoke(this, buffer); } 设置一个事件,用以传递监听到的图片信息。public async void StartListening(IPAddress IP,int Port) { tcpListener = new TcpListener(IP, Port); tcpListener.Start(); while (true) { tcpClient = await tcpListener.AcceptTcpClientAsync(); Task.Run(() => HandleClient(tcpClient)); } } private void HandleClient(TcpClient client) { try { NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; // 使用固定大小的缓冲区 using (MemoryStream ms = new MemoryStream()) { int bytesRead; while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, bytesRead); } if (ms.Length > 0) { // 在主线程上更新 UI MainThread.BeginInvokeOnMainThread(() => { OnMessageReceived(ms.ToArray()); }); } } } catch (Exception ex) { Console.WriteLine($"Exception in HandleClient: {ex.Message}"); } } 创建一个监听函数,注意的是,我们是接受完一次完整的流再传递信息,而不是边接收边传递。private void OnMessageReceived(object sender, byte[] message) { MainThread.BeginInvokeOnMainThread(async () => { try { using (MemoryStream ms = new MemoryStream(message)) { SKBitmap bitmap = SKBitmap.Decode(ms); AndroidSaveClass save = new AndroidSaveClass(); string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "MAUI_Picture_Save"); if (!save.DoesFolderExist(folderPath)) { Directory.CreateDirectory(folderPath); } // 生成文件路径 string uniqueFileName = $"sample_{DateTime.Now:yyyyMMddHHmmssfff}.png"; string filePath = Path.Combine(folderPath, uniqueFileName); // 将 SKBitmap 编码并保存为 PNG 文件 using (var image = SKImage.FromBitmap(bitmap)) using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) using (var stream = File.OpenWrite(filePath)) { data.SaveTo(stream); } Picture.Source = filePath; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }); } 再MainPage.xmal.cs中,我们新建一个这个类的变量,监听我们的窗口。并且设置回调函数用来处理事件。 事件中,我们将图片的字节数组转为图片,之后保存到程序的文件目录中,并且使用时间戳防止图片重复。 之后用Image控件来绑定图片源显示图片。
.NET MAUI的Android WiFi图传开发(3)——Android设备接收TCP信息并显示
嘉立创PCB
磁珠——电路里的高频噪声“吸尘器” 在电路板的接口、芯片引脚、电源线路旁,常能看到一种黑色的贴片小元件,外形和普通贴片电感很像,它就是磁珠。别看它体积微小,却是抑制高频噪声、消除电磁干扰的利器,和电感功能相近却截然不同,是数字电路、高频电路里不可或缺的“噪声清洁工”。 一、磁珠的核心原理 磁珠的主要材质是铁氧体,属于耗能型抑制干扰元件,工作原理和电感完全不同。 它会将电路中的高频噪声、电磁干扰信号吸收,转化为热能散发掉,而不是像电感一样储存磁能再释放。简单来说,磁珠对低频信号、直流信号几乎无阻碍,却能精准“吃掉”高频杂波,让有效信号平稳传输,这也是它最核心的优势。 二、磁珠与普通电感的关键区别 很多人会把磁珠和电感弄混,二者在特性、用途上差异极大,一张表清晰区分如下图 三、磁珠的典型应用场景 1. 接口电路抗干扰 USB、HDMI、网口、音频接口旁必放磁珠,抑制插拔、传输时的高频电磁干扰,避免信号串扰,保证数据传输稳定,防止音频出现杂音。 ​ 2. 芯片电源引脚滤波 单片机、CPU、射频芯片的电源引脚串联磁珠,滤除电源线上的高频纹波和噪声,防止干扰芯片内部工作,避免芯片死机、运算出错。 ​ 3. 时钟电路降噪 晶振、时钟线周边加磁珠,抑制时钟信号的高频辐射,避免干扰周边电路,同时防止外界噪声影响时钟精度,杜绝频率漂移。 ​ 4. 开关电路消噪 继电器、按键、MOS管开关电路中,吸收开关瞬间产生的高频尖峰干扰,保护敏感元件,避免误触发。 四、磁珠的选型小要点 1. 看阻抗值:磁珠核心参数是100MHz频率下的阻抗(单位Ω),常用600Ω、1000Ω,干扰越强选阻抗越大的。 ​ 2. 看额定电流:电源线路用磁珠,额定电流要大于电路工作电流,避免过载发热损坏。 ​ 3. 看频率范围:针对高频噪声选对应频率段的磁珠,普通数字电路选100MHz阻抗型磁珠即可。 五、一句话总结 磁珠专啃高频噪声,低频信号畅通无阻,只耗能不储能,是高频电路抗干扰的首选小元件,比电感更适合精准消噪。
嘉立创PCB
1-32层pcb打样,真A级板材,最快12小时出货,自营制造,品质可靠!
打赏记录
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区