当前位置: 首页 > news >正文

.NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件

本文简述如何在Smobiler中使用Bluetooth。

Step 1. 新建一个SmobilerForm窗体,并在窗体中加入Button和Bluetooth,布局如下

在这里插入图片描述

Button的点击事件代码:

       /// <summary>
        /// 关闭蓝牙
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Press(object sender, EventArgs e)
        {
            bluetooth1.Close((abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                    Toast("success");
            });
        }
        /// <summary>
        /// 打开蓝牙
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Press(object sender, EventArgs e)
        {
            bluetooth1.Open((abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                    Toast("success");
            });

        }
        string macAdress = "";
         /// <summary>
         /// 搜索蓝牙设备
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
        private void button3_Press(object sender, EventArgs e)
        {
            bluetooth1.Search((abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                {
                    Toast("success" + args.Name + "  " + args.MacAddress);
                    macAdress = args.MacAddress;
                }
            });

        }
        /// <summary>
        /// 连接蓝牙
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Press(object sender, EventArgs e)
        {
            //第一个参数为蓝牙设备MAC地址
            bluetooth1.Connect(macAdress, (abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                    Toast("success");
            });
        }
        /// <summary>
        /// 关闭蓝牙
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button5_Press(object sender, EventArgs e)
        {
            bluetooth1.CloseConnect((abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                    Toast("success");
            });
        }
        /// <summary>
        /// 发送蓝牙信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Press(object sender, EventArgs e)
        {
            string str = "690000001";
            string print = "SIZE 80 mm,40 mm\r\n" + "REFERENCE 0,0\r\n" + "SPEED 4.0\r\n" + "DENSITY 8\r\n" + "SET PEEL OFF\r\n" + "SET CUTTER OFF\r\n" + "SET TEAR ON\r\n" + "DIRECTION 0\r\n" + "SHIFT 0\r\n" + "OFFSET 0 mm\r\n" + "CLS\r\n" + "BARCODE 20,20,\"128M\",160,1,0,4,12,\"" + str + "\"\r\n" + "TEXT 20,190,\"ARIAL.TTF\",0,15,15,\"" + str + "\"\n" + "PRINT 3,1\r\n";
            bluetooth1.WriteData(System.Text.Encoding.UTF8.GetBytes(print), (abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                    Toast("success");
            });
        }
        /// <summary>
        ///获取蓝牙状态,蓝牙是否连接成功需要GetStatus获取状态来判断
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button7_Press(object sender, EventArgs e)
        {
            bluetooth1.GetStatus((abj, args) =>
            {
                if (args.isError == true)
                    Toast(args.error);
                else
                {
                    Toast(args.Status + "  " + args.Name + "  " + args.MacAddress);
                    label2.Text = args.Status.ToString();
                }
            });
        }

在设计器中选中Bluetooth添加事件

在这里插入图片描述

        private void bluetooth1_DataReceived(object sender, Smobiler.Plugins.BluetoothDataReceivedEventArgs e)
        {
            //e.Data 接收到的数据; e.Deviceid 蓝牙设备id; 当连接多个蓝牙时,会多次触发该事件,可根据e.Deviceid区分蓝牙设备
            MessageBox.Show(System.Text.Encoding.GetEncoding("gbk").GetString(e.Data));
        }

Step 2. 运行服务端后,手机上安装官网的调试工具进行测试,效果如下

在这里插入图片描述

若是使用云平台上自行打包的客户端, 需要添加相应插件后再打包客户端。
在这里插入图片描述

补充

以上代码可用于连接经典蓝牙,BLE蓝牙请使用以下方法

方法方法说明
CloseConnectBle断开连接上的低功耗蓝牙设备
ConnectBle连接指定低功耗蓝牙
SearchBle查找并连接低功耗蓝牙
WriteBleData发送低功耗蓝牙信息

demo 参考 https://github.com/comsmobiler/SmobilerTutorials/blob/master/Source/Plugins/demoBluetooth.cs

相关文章:

  • 基于Xlinx的时序分析与约束(5)----衍生时钟约束
  • Python常见问题整理
  • Docker安装Zookeeper教程(超详细)
  • 【学习笔记12.25】动态规划入门
  • C语言用好写好头文件
  • 程序员过圣诞 | 用HTML写出绽放的烟花
  • 源码系列 之 HashMap
  • docker logs实时查看日志tail
  • Win10从零安装、训练、部署yolov5 6.x一条龙实战案例
  • 东北大学c++实验最后一次
  • 十六、Docker Compose容器编排第一篇
  • 时序预测 | MATLAB实现IWOA-LSTM和LSTM时间序列预测(改进的鲸鱼算法优化长短期记忆神经网络)
  • CSS预处理语言LESS与SCSS的介绍
  • 互联网摸鱼日报(2022-12-26)
  • 【Python学习记录】matplotlib绘图基本配置
  • Google 是如何开发 Web 框架的
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android Volley源码解析
  • co模块的前端实现
  • vue:响应原理
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 扑朔迷离的属性和特性【彻底弄清】
  • 悄悄地说一个bug
  • 如何设计一个比特币钱包服务
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • #在 README.md 中生成项目目录结构
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (6)STL算法之转换
  • (二)构建dubbo分布式平台-平台功能导图
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)scrum常见工具列表
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .describe() python_Python-Win32com-Excel
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Net Memory Profiler的使用举例
  • .Net各种迷惑命名解释
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • @Data注解的作用
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [100天算法】-实现 strStr()(day 52)
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [AIGC] 如何建立和优化你的工作流?
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)
  • [LuoguP1141]01迷宫
  • [MySQL复制异常]Cannot execute statement: impossible to write to binary log since statement is in row for
  • [New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
  • [nlp] grad norm先降后升再降