Ubuntu多IP

sudo vi /etc/network/interfaces

auto lan1
iface lan1 inet static
address 192.168.2.2
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
dns-nameservers 192.168.2.1

auto lan1:0
iface lan1:0 inet static
address 192.168.1.2
netmask 255.255.255.0

sudo /etc/init.d/networking restart
ifconfig 没生效
sudo service networking restart
stop: Job failed while stopping
start: Job is already running: networking
还是没生效
直接sudo reboot now!!!

lan1 Link encap:Ethernet HWaddr 40:00:00:03:00:76
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::0000:0000:fe03:0076/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1366 errors:0 dropped:1 overruns:0 frame:0
TX packets:198 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:107322 (107.3 KB) TX bytes:18459 (18.4 KB)

lan1:0 Link encap:Ethernet HWaddr 40:00:00:03:00:76
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

https://www.cnblogs.com/prettyshuang/p/5553700.html

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似乎一样,下载前者,很慢,不过还好,能显示基本信息,也可以触发蜂鸣器。