vue & mqtt

vue init webpack mq
cd mq
npm install
npm run dev

https://blog.csdn.net/M_wolf/article/details/79373348
http://www.tongxinmao.com/txm/webmqtt.php

Paho is not defined?!static中也要放一份

mqttws31.rar

C# 读写Excel文件的类库NPOI

建立文件

HSSFWorkbook workbook2003 = new HSSFWorkbook(); //新建xls工作簿  
workbook2003.CreateSheet("Sheet1");  //新建3个Sheet工作表  
workbook2003.CreateSheet("Sheet2");  
workbook2003.CreateSheet("Sheet3");  
FileStream file2003 = new FileStream(@"E:\Excel2003.xls", FileMode.Create);  
workbook2003.Write(file2003);  
file2003.Close();  //关闭文件流  
workbook2003.Close();  

读取

IWorkbook workbook = null;  //新建IWorkbook对象  
string fileName = "D:\\表格.xlsx";
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
if (fileName.IndexOf(".xlsx") > 0) // 2007版本  
{
    workbook = new XSSFWorkbook(fileStream);  //xlsx数据读入workbook  
}
else if (fileName.IndexOf(".xls") > 0) // 2003版本  
{
    workbook = new HSSFWorkbook(fileStream);  //xls数据读入workbook  
}
ISheet sheet = workbook.GetSheetAt(0);  //获取第一个工作表  
IRow row;// = sheet.GetRow(0);            //新建当前工作表行数据  
for (int i = 0; i < sheet.LastRowNum; i++)  //对工作表每一行  
{
    row = sheet.GetRow(i);   //row读入第i行数据  
    if (row != null)
    {
        for (int j = 0; j < row.LastCellNum; j++)  //对工作表每一列  
        {
            string cellValue = row.GetCell(j).ToString(); //获取i行j列数据  
            Console.WriteLine(cellValue);
        }
    }
}
Console.ReadLine();
fileStream.Close();
workbook.Close();

创建

HSSFWorkbook workbook2003 = new HSSFWorkbook(); //新建工作簿  
workbook2003.CreateSheet("Sheet1");  //新建1个Sheet工作表              
HSSFSheet SheetOne = (HSSFSheet)workbook2003.GetSheet("Sheet1"); //获取名称为Sheet1的工作表  
//对工作表先添加行,下标从0开始  
for (int i = 0; i < 10; i++)  
{  
    SheetOne.CreateRow(i);   //创建10行  
}  
//对每一行创建10个单元格  
HSSFRow SheetRow = (HSSFRow)SheetOne.GetRow(0);  //获取Sheet1工作表的首行  
HSSFCell[] SheetCell = new HSSFCell[10];  
for (int i = 0; i < 10; i++)  
{  
    SheetCell[i] = (HSSFCell)SheetRow.CreateCell(i);  //为第一行创建10个单元格  
}  
//创建之后就可以赋值了  
SheetCell[0].SetCellValue(true); //赋值为bool型           
SheetCell[1].SetCellValue(0.000001); //赋值为浮点型  
SheetCell[2].SetCellValue("Excel2003"); //赋值为字符串  
SheetCell[3].SetCellValue("123456789987654321");//赋值为长字符串  
for (int i = 4; i < 10; i++)  
{  
    SheetCell[i].SetCellValue(i);    //循环赋值为整形  
}  
FileStream file2003 = new FileStream(@"E:\Excel2003.xls", FileMode.Create);  
workbook2003.Write(file2003);  
file2003.Close();  
workbook2003.Close();   

https://www.cnblogs.com/zagelover/articles/3291536.html
https://www.cnblogs.com/amylis_chen/p/7841261.html(主要)
https://blog.csdn.net/echoerror/article/details/80902493

C#判断操作系统

为啥要判断操作系统,C#不是微软的作品嘛,Windows下的,是判断版本?不是的,还有个东西叫mono。

using System;
PlatformID pid = Environment.OSVersion.Platform;

其中PlatformID是一个枚举类型,不看不知道,C#还是蛮厉害的

public enum PlatformID
{
    //
    // 摘要:
    //     操作系统为 Win32s(Win32 子集)类型。Win32s 是运行于 Windows 16 位版本上的层,它提供对 32 位应用程序的访问。
    Win32S = 0,
    //
    // 摘要:
    //     操作系统为 Windows 95 或较新的版本。
    Win32Windows = 1,
    //
    // 摘要:
    //     操作系统为 Windows NT 或较新的版本。
    Win32NT = 2,
    //
    // 摘要:
    //     操作系统为 Windows CE。
    WinCE = 3,
    //
    // 摘要:
    //     操作系统为 Unix。
    Unix = 4,
    //
    // 摘要:
    //     开发平台为 Xbox 360。
    Xbox = 5,
    //
    // 摘要:
    //     操作系统是 Macintosh。
    MacOSX = 6
}

用的windows7,结果是Win32NT = 2。

重新学了BLE,准备做个无线开关

翻出大球的套件,翻到两节(或者两片)2032纽扣电池,翻出当年下载的网盘资料,翻出陈年的老贴,开始搭环境吧。
http://forum.eepw.com.cn/thread/277617/1

首先打开CC254xEK\用户手册\New-Keyfob使用说明书.pdf(2013年11月12日版)这是是详细的使用说明,但没有描述开发环境搭建。

CC254xEK\BLE权威教程.pdf(2013年10月1日版)本以为是本电子书,结果是官方的149页开发教程。

首先运行Software\IAR\8.10.4\IAR EW8051 8.10.4\1.IAR EW8051-8.10.3安装包里的autorun.exe。

autorun似乎已经不支持win7 x64了,还好在ew8051文件夹找到一个可以运行的setup.exe。

2.IAR 8051 注册机文件夹运行!RUNME.BAT文件,没用管理员(或许自己就是),生成license.txt文件,提取一个Installserial号码xxxx-xxx-xxx-xxxx,然后KEY要选择第二个带EW8051的,整行拷入即可,选择完全安装,默认装在C盘。

3.EW8051-8.10.4里的文件们拷入C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\8051可以升级到8.10.4

协议栈要单独安装CC254xEK\源码\BLE协议栈\版本1.3.2

打开C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\KeyFob\CC2541DB下的Workspace,Project->Rebuild All通过。

安装仿真器驱动CC254xEK\仿真器\CC-Debugger\驱动程序\win_64bit_x64,接上不带电池的开发板(是否可以增加元件屏蔽电池呢),按debugger上按钮,指示灯变为绿色

Project->Options(Alt+F7)->Debuger,Driver选择Texas Instruments,然后Download and Debug(Ctrl+D 绿色箭头),需要点击Debug->Go(F5)全速运行

文档里提到APP,Smart Nudge和TI BLE Multiool都下架了,搜到TI SensorTag和TI SimpleLink Starter似乎一样,下载前者,很慢,不过还好,能显示基本信息,也可以触发蜂鸣器。

ECharts入门

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

    <title>ECharts</title>
    <script src="https://cdn.bootcss.com/echarts/4.2.0-rc.2/echarts.min.js"></script>
    <style type="text/css">
        html,
        body { height: 100%; padding: 0; margin: 0; }
        .outer { height: 100%; padding: 0; box-sizing: border-box ; }
    </style>
</head>
<body>
    <div id="main" class="outer"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

参考文献:
实例 http://echarts.baidu.com/examples/
文档 http://www.echartsjs.com/tutorial.html
CDN https://www.bootcdn.cn/echarts/
全屏显示 http://www.cnblogs.com/pangguoming/p/5695184.html