土斯 发布的文章

openwrt 操作IIC

img_3075-removebg.png
img_3082-removebg.png

固件内置了i2ctools软件包

  1. 用i2cdetect -l 命令来列出所有I2C总线
    root@Widora:/# i2cdetect -l
    i2c-0 i2c 10000900.i2c I2C adapt
  2. 用i2cdetect -F 0 来查看I2C 0号总线启用的功能

    root@Widora:/# i2cdetect -F 0
    Functionalities implemented by /dev/i2c-0:
    I2C yes
    SMBus Quick Command yes
    SMBus Send Byte yes
    SMBus Receive Byte yes
    SMBus Write Byte yes
    SMBus Read Byte yes
    SMBus Write Word yes
    SMBus Read Word yes
    SMBus Process Call yes
    SMBus Block Write yes
    SMBus Block Read no
    SMBus Block Process Call no
    SMBus PEC yes
    I2C Block Write yes
    I2C Block Read yes

  3. 查看I2C 0号总线上挂载的设备

    root@Widora:/# i2cdetect -y 0
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

其中标识为UU的设备(地址分别为0x1a和0x34)表示内核已经加载了相应的驱动,而地址为0x48的I2C设备尚未被内核所驱动。

  1. 在sysfs文件中可查看已被内核驱动的I2C设备的名称

     root@Widora:/# ls /sys/bus/i2c/devices
     0-001a  0-0034  i2c-0
     root@Widora:/# cat /sys/bus/i2c/devices/0-001a/name
     wm8960
     root@Widora:/# cat /sys/bus/i2c/devices/0-0034/name
     codec_wm8960
    
  2. 用i2cdump -y 0 0x48 W 命令来读取地址为0x48的I2C设备(LM75温度传感器)所有寄存器中的内容
 root@Widora:/# i2cdump -y 0 0x48 W
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    10: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    20: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    30: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    40: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    50: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
    60: 1e 00 4b 00 ff ff ff ff 1e 00 4b 00 ff ff ff ff    ?.K.....?.K.....
  1. 用i2cget -y 0 0x48 0 w 命令来读取地址为0x48的I2C设备0号寄存器中的内容

K210 例程

20200424105607.png

扫描IIC设备

from machine import I2C
i2c = I2C(I2C.I2C0, freq=100000, scl=28, sda=29)
devices = i2c.scan()
print(devices)

PWM

from machine import Timer,PWM
import time

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=500000, duty=50, pin=board_info.LED_G)
duty=0
dir = True
while True:
    if dir:
        duty += 10
    else:
        duty -= 10
    if duty>100:
        duty = 100
        dir = False
    elif duty<0:
        duty = 0
        dir = True
    time.sleep(0.05)
    ch.duty(duty)

实时拍照

   import sensor
    import image
    import lcd
    lcd.init()
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.run(1)
    while True:
        img=sensor.snapshot()
        lcd.display(img)

找颜色

import sensor
import image
import lcd
import time
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
green_threshold   = (0,   80,  -70,   -10,   -0,   30)
while True:
    img=sensor.snapshot()
    blobs = img.find_blobs([green_threshold])
    if blobs:    
        for b in blobs:
            tmp=img.draw_rectangle(b[0:4]) 
            tmp=img.draw_cross(b[5], b[6]) 
            c=img.get_pixel(b[5], b[6])
    lcd.display(img)

显示fps

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    fps =clock.fps()
    img.draw_string(2,2, ("%2.1ffps" %(fps)), color=(0,128,0), scale=2)
    lcd.display(img)

扫描二维码

import sensor
import image
import lcd
import time

clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)
sensor.run(1)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_qrcodes()
    fps =clock.fps()
    if len(res) > 0:
        img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)
        print(res[0].payload())
    lcd.display(img)

古人很容易开发预知能力,而现在人却很难

人类拥有第三只眼,称为松果体,早在7万多年前就开始进化出现,松果体不仅有控制激素分泌生物钟等功能,还可以观看眼睛看不到的东西,例如磁场能和量子能 红外能 等等,而灵魂也是某种能量物质的一种呈现方式,松果体在人类出生后的几个月发育到最大,随后越长大越萎缩,得到开发的人便有了预知能力,像 袁天罡 诸葛亮刘伯温爱因斯坦特斯拉等都是松果体开发比较好才会拥有平常人没有的超能力,松果体作为唯一与灵魂连接的地方,过度开发如果控制不好容易被鬼魔缠身,现在伟人少 是因为 人类过于忙碌 加上不规律的生活及各种垃圾食品导致松果体钙化或变质导致无法感知宇宙世界。
刚出生的小孩和一些动物都能感受到人类感受不到的惊吓也是源于此。

烧饼歌

明太祖一日身居内殿,食烧饼,方啖一口,内监忽报刘基进见,太祖以碗覆之,始召基入。
帝问曰:“先生深明数理,可知碗中是何物件?”
  基乃捏指轮算,对曰:“半似日兮半似月,曾被金龙咬一缺,此乃饼也。”
开视果然。帝即问以天下后世之事若何。
基曰:“茫茫天数,我主万子万孙。何必问哉。”
  帝曰:“虽然自古兴亡原有一定,况天下非一人之天下,惟有德者能享之。言之何妨?试略言之。”
  基曰:“泄漏天机,臣罪非轻!陛下恕臣万死,才敢冒奏。”
帝即赐以免死金牌,基谢恩毕。
基曰:“我朝大明一统世界,南方终灭北方终,嫡裔太子是嫡裔,文星高拱日防西。”
  帝曰:“朕今都城竹坚守密,何防之有?”
  基曰:“臣见都城虽巩固,防守严密。似觉无虞,只恐燕子飞来。
随作歌三首:
  “此城御驾尽亲征,一院山河永乐平;
  秃顶人来文墨苑,英雄一半尽还乡。
  北方胡虏残生命,御驾亲征得太平;
  失算功臣不敢谏,旧灵遮掩主惊魂。
  国压瑞云七载长,胡人不敢害贤良;
  相送金龙复故旧,灵明日月振边疆。”
  帝曰:“此时天下若何?”
  基曰:“天下大乱矣。”
  帝曰:“朕之天下,有谁乱者?”
  基曰:
“天下饥寒有怪异,栋梁龙德乘婴儿;
禁宫阔大任横走,长大金龙太平时;
老拣金精尤壮旺,相传昆玉继龙堂;
阉人任用保社稷,八千女鬼乱朝纲。”
  帝曰:“八千女鬼乱朕天下者何?”
  基曰:
“忠良杀害崩如山,无事水边成异潭;
救得蛟龙真骨肉,可怜父子难顺当。”
  帝曰:“莫非父子争国乎?”
  基曰:“非也!
树上挂曲尺,遇顺则止。
至此天下未已。”
帝曰:“何谓未已?”
  基曰:
“万子万孙层叠层,祖宗山上贝衣行;
公侯不复朝金阙,十八孩儿难上难。”
基又曰:
“木下一了头,目上一刀一戊丁;
天下重文不重武,英雄豪杰总无春;
戊子已丑乱如麻,到处人民不在家;
偶遇饥荒草寇发,平安镇守好桂花。”
  帝曰:“偶遇饥荒,平常小丑!天下已乎?”
  基曰:
“西方贼拥乱到前,无个忠良敢谏言;
喜见子孙耻见日,衰颓气运早升天;
月缺两二吉在中,奸人机发去西东;
黄河涉过开金阙,奔走梅花上九重。”
  帝曰:“莫非梅花山作乱乎?从今命人看守何如?”
  基曰:“非也!
‘迁南迁北定太平,辅佐帝王有牛星;
运至六百半,梦奇有字得心惊。’”
  帝曰:“有六百年之国祚,朕心足矣。尚望有半乎?”
  帝又曰:“天机卿难言明,何不留下锦囊一封,藏在库内。世世相传勿遗也,急时有难,则开视之。可乎?”
  基曰:“臣亦有此意。
‘九尺红罗三尺刀,劝君任意自游遨;
阉人尊贵不修武,惟有胡人二八狄。’
臣封柜内,俟后开时自验!
基又曰:
“桂花开放好英雄,拆缺长城尽孝忠;
周家天下有重复,摘尽李花枉劳功。
黄牛背上鸭头绿,安享国家珍与粟;
云盖中秋迷去路,胡人依旧胡人毒;
反覆从来折桂枝,水浸月宫主上立;
禾米一木并将去,二十三人八方居。”
  帝曰:“二十三人乱朕天下?八方安居否?”
  基曰:“臣该万死,不敢隐瞒,至此大明天下亡之久矣。”
  帝大惊,即问:“此人生长在何方?若何衣冠?称何国号?治天下何如?”
  基曰:
“还是胡人二八秋,二八胡人二八忧;
二八牛郎二八月,二八嫦娥配土牛。”
  帝曰:“自古胡人无百年之国运,乃此竟有二百余年之运耶?”
  基曰:
“雨水草头真主出,赤头童子皆流血;
倒置三元总才说,须是川水页台阙;
十八年间水火夺,庸人不用水火臣;
此中自己用汉人,卦分气数少三数;
亲上加亲又配亲。”
  帝曰:“胡人至此,用人水夺火灭,亲上加亲,莫非驸马作乱乎?”
  基曰:“非也!胡人英雄,水火既济,安享太平,有位有势。时值升平,称为盛世,气数未尽,还有后继。
‘宝剑重磨又重磨,抄家灭族可奈何;
阉人社稷藏邪鬼,孝弟忠奸诛戮多;
李花结子正逢春,牛鸣二八倒插丁;
六十周甲多一甲,螺角倒吹也无声;
点画佳人丝自分,一止当年嗣失真;
泥鸡啼叫空无口,树产灵枝枝缺魂;
朝臣乞来月无光,叩首各人口渺茫;
一见生中相庆贺,逍遥周甲乐饥荒。’”
  帝曰:“胡人到此败亡否?”
  基曰:“未也!虽然治久生乱,值此困苦,民怀异心,然气数未尽也。
‘廿岁力士开双口,人又一心度短长;
时俺寺僧八千众,火龙渡河热难当;
叩首之时头小兀, 娥虽有月无光;
太极殿前卦对卦,添香禳斗闹朝堂;
金羊水猴饥荒岁,犬吠猪鸣汨两行;
洞边去水台用水,方能复正旧朝网;
火烧鼠牛犹自可,虎入泥窝无处藏。
草头家上十口女,又抱孩儿作主张;
二四八旗难蔽日,辽阳思念旧家乡;
东拜斗,西拜旗,南逐鹿,北逐狮;
分南分北分东西,偶逢异人在楚归;
马行万里寻安歇,残害中女四木鸡;
六一人不识,山水倒相逢。
黄鬼早丧赤城中,猪羊鸡犬九家空;
饥荒灾害皆并至,一似风登民物同;
得见金龙民心开,刀兵水火一齐来;
文钱斗米无人要粜,父死无人兄弟抬;
金龙绊马半乱甲,二十八星问士人;
蓬头少女蓬头嫁,揖让新君让旧君。’”
  帝曰:“胡人至此败亡否?”
基曰:“手执钢刀九十九,杀尽胡人方罢休;
可怜难渡雁门关,摘尽李花灭尽胡;
黄牛山下有一洞,可投拾万八十众;
先到之人得安稳,后到之人半路送;
难恕有罪无不罪,天下算来民尽瘁。
火风鼎,两火初兴定太平;
火山旅,银河织女让牛星。
火德星君来下界,金殿楼台尽丙丁;
一个胡子大将军,按剑驰马察情形;
除暴去患人多爱,永享九州金满盈。”
  帝曰:“胡人此时尚在否?”
  基曰:“胡人至此,亡之久矣。
‘四大八方有文星,品物咸亨一样形;
琴瑟和谐成古道,左中兴帝右中兴;
五百年间出圣君。
周流天下贤良辅,气运南方出将臣,
圣人能化乱渊源,八面夷人进贡临,
宫女勤针望夜月,乾坤有象重黄金,
北方胡掳害生灵,更会南军诛戮行,
匹马单骑安国外,众君揖让留三星,
上元复转气运开,大修文武圣主裁,
上下三元无倒置,衣冠文物一齐来,
七元无错又三元,大开文风考对联,
猴子沐盘鸡逃架,犬吠猪鸣太平年,
文武全才一戊丁,流离散乱皆逃民,
爱民如子亲兄弟,创立新君修旧京。’
千言万语知虚实,留与苍生长短论。”
屏幕快照 2020-02-09 上午11.37.07.png

利用树莓派结合datamark 实现远程移动监控

请输入图片描述

#encoding=utf-8
import cv2
import time
from poster.encode import multipart_encode
import urllib2
import os,shutil
import sys
from urllib2 import Request, urlopen, URLError, HTTPError
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import datetime
import socket
import time

DATAMARK=1
TLINK=2
GIZWITS=3
print "open video0"
cap=cv2.VideoCapture(0)
print cap
pre_frame = None
def post(file):
    register_openers()
    f=open(file, "rb")
    datagen, headers = multipart_encode({"myFile": f})
    request = urllib2.Request("http://trtos.com/web/datamark/upload.php", datagen, headers)
    try:
        response = urllib2.urlopen(request)
        print response.read()
         
    except URLError,e:
        print e.reason
        print e.code




def send(context,name,id):
   if name==DATAMARK:
       context=context+"\n"
       ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
       ss.connect(('trtos.com',80))
       msg="POST /php/api.php?id="+id+" HTTP/1.1\n"+ \
            "Content-Type: application/x-www-form-urlencoded\n"+ \
            "Host: trtos.com\n"+ \
            "Content-Length: "+str(len(context))+"\n"+ \
            "Expect: 100-continue\n"+ \
            "Connection: Keep-Alive\n\n\n"+context
       ss.sendall(msg)
       ss.close()
       print msg
   elif name==TLINK:
       ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
       ss.connect(('tcp.tlink.io',8647))
       time.sleep(1)
       ss.sendall(id)
       time.sleep(1)
       ss.sendall(context)
       ss.close()
       print id,context,name
   elif name==GIZWITS:
       print "机智云"
      
while(1):
    ret,frame=cap.read()
    curframe=frame.copy()
    k=cv2.waitKey(1)
    gray_img=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray_img=cv2.resize(gray_img, (500, 500))
    gray_img=cv2.GaussianBlur(gray_img, (21, 21), 0)
    if pre_frame is None:
        pre_frame = gray_img
    else:
        img_delta = cv2.absdiff(pre_frame, gray_img)
        thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]
        thresh = cv2.dilate(thresh, None, iterations=2)
        thresh,contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
        for c in contours:
            if cv2.contourArea(c) < 3000:
                 print cv2.contourArea(c)
                 continue
            else:
                 (x,y,w,h) = cv2.boundingRect(c)
                 cv2.rectangle(curframe,(x,y),(x+w,y+h),(0,255,0),2)
                 cv2.imwrite("5uT5zGTG.jpg",curframe)
                 post("5uT5zGTG.jpg")
                 shutil.move("5uT5zGTG.jpg","/home/pi/record/"+datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')+".jpg")
                 send("area:"+str(cv2.contourArea(c)),DATAMARK,"5uT5zGTG")
    pre_frame = gray_img
    time.sleep(1)
cap.release()`

python-opencv环境搭建

使用ubuntu18.2 系统或者其他系统
默认会安装python2.7
sudo apt install python
sudo apt install python-opencv
sudo apt install python-pip2019-11-23 18-12-21 的屏幕截图.png

DataMark 云便签 API

地址 http://dm.trtos.com/

JSON 操作 DataMark 数据项

地址:http://dm.trtos.com/php/json.php
Post 添加数据
{"action":"add","id":"y9JM9Rd","content": [{"name": "项目1","value": "5555"},{"name": "项目2","value": "1234"}]}
返回
{"action":"add","status":"succeed"}
Post 删除所有数据
{"action":"del","id":"y9JM9Rd"}
返回
{"action":"del","status":"succeed"}
Post 获取分配ID
{"action":"getid"}
返回
{"action":"getid","id":"y9JM9Rd"}
Post 获取记录(必要参数id,可选参数name,value)
{"action":"get","id":"y9JM9Rd"}
{"action":"get","id":"y9JM9Rd","name":"项目1"}
{"action":"get","id":"y9JM9Rd","name":"项目1","value":"5555"}
返回
[{"Name":"Name1","Value":"xiaowu"},{"Name":"Name2","Value":"Xiaotian"}]

上传背景图代码 可用于监控
微信截图_20200703145710.png

#!usr/bin/python
# image.py
# -*- coding=utf-8 -*-
from poster.encode import multipart_encode
import urllib2
import sys
from urllib2 import Request, urlopen, URLError, HTTPError
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
  
register_openers()
f=open("4UTmPcpw.jpg", "rb")

datagen, headers = multipart_encode({"myFile": f})
request = urllib2.Request("http://trtos.com/web/datamark/upload.php", datagen, headers)
try:
    response = urllib2.urlopen(request)
    print response.read()
     
except URLError,e:
    print e.reason
    print e.code

修改数据标签 指定选项内容
这种方式比较简单 直接通过浏览器访问方式操作
微信截图_20200703152045.png
eg:设置名和值 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=使用率&value=99%
eg:设置名 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=使用率
eg:获取名和值 http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717
下例 是使用python 上传 ip地址

import requests
import datetime
import socket
def get_host_ip():
    """
    查询本机ip地址
    :return: ip
    """
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip

hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
ip="0.0.0.0"
ip=get_host_ip()
date=datetime.datetime.now()
response = requests.get('http://dm.trtos.com/web/datamark/update.php?id=5oOeooHz&index=149717&name=树莓派IP&value='+ip+":"+str(date))
print(response.text)


共享变量

设置值 http://www.trtos.com/php/value.php?name=my_value&value=123456
读取值 http://www.trtos.com/php/value.php?name=my_value

极客虫

15年的一个众筹项目,失败了。

https://github.com/tongjinlv/TRTOS.git
_20191108143604.jpg
微信图片_20191108143556.jpg
原理图
QQ截图20191108144434.png
PCB截图

QQ截图20191108145330.png

代码地址 https://github.com/tongjinlv/TRTOS.git
硬件下载地址 使用Altium Designer 16 开发 https://github.com/RTOS-Developers/Geekinsect-Handware.git
GeekInsect(IDE).zip

24058711_1139850856152505_7019318682367256450_n.jpg

1、项目背景

对于目前市面上的智能玩具功能单一,不具备扩展性,多以几个可选动作或循环几个动作为主,很古板单调,玩一段时间就疲倦乏味,这就是我们要开发这款可编程极客虫的原因,在玩的同时对提高编程思维能力有所帮助,并且非常适合用来开发儿童的创意性思维,极客虫也是一套极适合用来开发仿生机器人的硬件,携带的传感器完全可以实现趋光跟随避障和循迹等动作。

2、我想要做什么

极客虫是我们的第一款硬件产品既可以用来做编程练习又可以增加乐趣,我们已经尽可能的把体验做到极致。

1、灵活:两侧一对空心杯电机提供整只虫子的动力,极其灵活,可以实现原地旋转和任意方向爬行。

2 小巧:整体尺寸仅为3.9cm6.2cm2cm,大概只有两个多硬币大小,放置在大小刚刚好的碳化竹收藏盒内,刚好合适,方便随身携带。

3、方便:固件更新、应用下载、调试、充电等都通过尾部的micoUSB接口,内部固化的BOOT引导程序加上usb复位重启机制使之不可能死机。配套的固件开发环境支持F5一键下载固件,免去了使用stlink下载的繁琐,配套的拖拽式开发环境可以一键下载应用无需重启直接运行,无需任何设置。

4、集成化设计:所有传感器均集成到主板,保证了体积小高可靠性。

4、非常容易上手的集成拖拽式开发环境。

3、产品面向的用户群体

我们的用户群体:所有对仿生机器人、玩具开发有兴趣的人或以教学为目的的组织机构。

极客虫涉及到的软硬件都是我们自己研发的,没有使用任何开源组件:

极客虫运行的是我们自主开发的开源操作系统TRTOS,一直应用于工业设备开发,稳定性和灵活性很高,上手也非常容易。并已经开发出成熟的深度应用us级别解析器,多任务动态创建,配合拖拽式编程开发环境Geekinsect(IDE),就算你不会编程也能分分钟写出应用,Geekinsect(IDE)集成了固件和应用联网同步共享功能,联合MDK开发环境实现编译完成即刻共享。

4、产品的亮点、如何使用产品

我们的宗旨就是体验,质量,美感一个也不能少,始终把体验放在第一位,尽量保证在不需要说明书的前提下都能够直接使用。

用户在收到极客虫后登陆收纳盒上的网址,下载拖拽式开发环境并连接极客虫到电脑即可进行拖拽式开发,想了解更多或对其进行深层次的开发请加技术支持群或访问TRTOS主页。

5、项目的困难和风险

  1. 在进行电源设计的时候刚开始为了效果好用了DCDC,最后发现都没有手册上的描述的效果好,就后就换成了数字部分LDO供电其他部强供电。
  2. 由于考虑到拨动开关影响外观,用一个按钮做开关机和功能复用键,关机0功耗,在关机模式下usb能强制唤醒和复位,用来保证不可能成为板砖,为了这部分电路打了两次板调试了很久,最后终于获得满意的效果;
  3. 为了保证普通用户能够方便使用,单独开发了一套BOOT固件和BOOT升级APP可以嵌入到MDK中使用。

粮食战争早已开始,我们却没有能发芽的种子(震惊)

中国正在成为全球第一粮食进口大国

QQ截图20191108100005.png
粮食是影响国家安全、政治稳定、经济发展和社会和谐的重要战略物资;是进行政治经济军事攻防策略的可怕武器!
可以说谁垄断粮食市场,谁就能掌控世界政治经济主导权。
换言之,尽管中国已经拥有强大的工业制造业,但农业依然落后,既不是农业大国,也不是农业强国。
美国著名外交家基辛格曾经说过:“如果你控制了石油,你就控制了所有的国家;如果你控制了粮食,你就控制了所有的人。”
中国经济的头等大事是确保国家粮食安全。为什么中国粮食产量在一百年当中最长的一个连续丰年周期之后,中国府库盈满,完全没有饥馑之忧的时候,中国还会把国家“粮食安全”放在历年中国经济的头等大事的位置上?
数据显示,随着中国人口增长和消费提升,粮食出现巨大缺口。2017年中国粮食进口1亿3千万吨,大豆和稻米进口量为世界第一。2002年至今,中国的粮食进口量增长了800%。中国已成为全球第一大粮食进口国。
QQ截图20191108100044.png

中国的粮食缺口在不断加大。

在过去三年中,玉米、小麦和大米的进口量都在翻倍增长。据农业部预测,到2020年,中国的粮食产量将上升到5.54亿吨。缺口将加大到1亿吨以上。这表明中国既不是农业生产的大国,也不是农业生产的强国。中国正在成为农产品的纯进口国。

与此同时,由于工业化和城市化的影响,中国的耕地面积在以每年40万公顷的速度减少。虽然中国不甘心沦为粮食纯进口国,但农业部官员认为,到21世纪第二个十年结束的时候,很可能会出现这种局面。
中国过去一直努力要把粮食进口控制在5%以下,现在看来,没能做到。政府转而加大了对国际市场的依赖度。业内认为,农产品也会像石油一样出现问题,成为农产品的纯进口国。中国将不惜一切代价,保证粮食供应的安全。
根据《经济学人》智库发布的《2013年世界粮食安全指数报告》,西方国家占领了全球粮食安全系数排行榜第一梯队,中国则位列第42位,大大领先于中国的,包括粮食严重依赖进口的日本(18位)和韩国(24位)。如今,中国的双脚已不可避免地踏上了海外粮食进口的疆土。
QQ截图20191108100159.png

粮食战争:这样的警告能不能让中国猛省?

多年以来,中国的粮食基本上能自给自足,粮食进出口大体相抵。直到前几年,中国还只是进口很少量的优质大米和少量的小麦,几乎不进口玉米,坚持自给自足。但是,这种现象正在发生转变,中国已经成为世界上最大的大豆进口国,现在又开始把玉米、小麦、大麦和大米等谷物,纳入其大宗进口产品名单。
对于中国来说,即使中国仅进口5%的玉米,那也将相当于全球玉米交易的1/3或者将近一半。影响竟大到如此程度。早在30多年前,开始进入高速经济增长阶段时,中国就一直面临一种可怕的预言式警告:中国对粮食日益增长的需求,可能导致全世界的粮食短缺。
不知道这一切能不能让中国猛省?尽管中国已经拥有了强大而现代的工业,相对较为发达的科学技术水平,但农业依然弱小而落后,弱小而落后的不是中国的农业科技,而是中国的土地制度。
从这个意义上说,中国的现代化强国是一个跛足的现代化强国,如果没有强大的农业,中国始终在用一条腿在现代化跑道上蹦跶的国家。
QQ截图20191108100224.png

如果我们仍在农业的改革开放上谨小慎微,小修小补,保守如斯,如果我们始终视中国的土地制度是中国改革开放的雷区,那么中国的粮食自给率便会不断下行,中国的农业便会依旧弱小。面对这样的现状,能不能让中国猛省?能不能让中国在土地制度的改革开放上,有所作为?我们在等待答案。

粮食战争早已开始,我们手里却没有能发芽的种子
一切不能自留种子的农业模式,都没有存在的价值。
2018年5月27日下午,我们去郊外的乡村徒步,在某山的深处,人迹罕至的地方,遇到一位姓曾的74岁的农民老伯。我们指着大爷屋门前的两分秧田,问,这个秧苗是什么品种,是自己留种子的吗?
大爷说,秧田种子是买的,不是自己留的。不能自己留种,必须每年去买牠们的,种子要50元一斤。自己留种则没有收成。水稻不能自己留种,玉米也不能自己留种,蔬菜不能自己留种啦!听完我的心里像针扎一样的痛。
我们反转基因是怎么反的?天天在微信群里反,吵得天翻地覆。可是有几个人走到田野上去?那里才是决定转基因去留的战场,这些人是我们的父母,我们只需要一句话,就能定夺。可是我们一败涂地。当我们在微信群里吵得你死我活的时候,转基因悄悄占领了我们的土地,大山最深处,人迹罕至的地方,水稻不能留种,玉米不能留种,可见转基因已经渗透到什么地步。

春种一粒粟,秋收万颗子。这是千万年来的传承。为什么我们对于“不能留种”这么大的事情,如此麻木不仁?当农作物失去生育能力的时候,它是受到了什么样的伤害?遭受了什么样的折磨?我们问过吗?我们体恤过吗?
当农作物不能生育的时候,它还能让我们生育吗?中国人的生育能力急剧下降,为什么没有人去追问,没有人去考证,没有人去做权威的统计调查,并锁定原因?当我们对自己的生育能力都不关心的时候,关心其他的东西还有意义吗?老祖先从来不吃没有生育能力的食物。
任何一个物种,要与不断变化的环境相适应,就必须在其一生中不断学习,如何适应环境获取能量。物种在与环境相适应的过程中,会向生殖细胞写入信息,并且能够向下一代遗传。所以,骡子,杂交水稻,无籽西瓜,转基因,基因编辑等物种,因为生殖细胞不发育,不具备生育能力,因而也就失去了与环境的适应性。吃这样的食物,也就必然导致我们失去生育能力。
思考用它抹一抹,止痒通鼻,不打喷嚏!
QQ截图20191108100232.png

生命必须与环境相适应,才能获得能量。生育的本质,就是与不可逆的环境相适应。当作物的生殖细胞不存在,环境适应性没有了,我们的生育能力从哪里来?阉割的家禽家畜可以吃,因为阉割的家禽家畜,它的生殖细胞是发育的。这和转基因、基因编辑、杂交水稻、骡子、三倍体无籽西瓜不一样。后者是生殖细胞根本不能发育。

QQ截图20191108100239.png
骡子和杂交水稻一样,也具备所谓的“杂交优势”,骡子一岁就能长到妈妈5岁的体型,而且力气特别足。可这样的“杂交优势”是以生殖细胞不发育为代价的。这样的“杂交优势”有意义吗?我们不结婚,可以留下彩礼钱;不读书,可以省下学费钱。这样肯定更加富裕。可这样的“富裕”有意义吗?
老祖先从来不吃没有生育能力的食物。一切没有生育能力的食物都是不能吃的。过去人生活艰苦,大多数生了8个10个孩子基本活了下来。他们那一代人吃的什么?一年才有三餐半肉,生育能力那么旺盛。反观现在的人,三四十岁就生不了孩子。还有更年轻的,一结婚就生不了孩子。
生不了孩子的痛苦,估计会有越来越多的人去体会。
种子天生就应该可以生育,可以自己留种,应该分散在每一个农民的手上。越分散越安全。那才是无法被摧毁的农业模式。哪怕发生战争,哪怕政权被摧毁,但是人还可以活下去,文化可以传承。政权以后还可以重建,血脉可以生生不息。
但如果农作物不能留种,并且种子的控制权落入敌对势力的手中,他们根本不需要发动战争,只需要掐断种子的供应,一个夏天就会饿殍遍野。
QQ截图20191108100247.png
大山的深处,水稻不能留种,玉米不能留种!瓜果、蔬菜不能自己留种,很无奈啊。每年都要买。那么多种子哪里来的?种子公司的制种基地在哪里?是不是美国人控制??
种子公司根本就不应该存在。种子公司是1978年以后才存在的。种子公司的存在,压根就是一个阴谋,是对一个国家的算计。历朝历代都没有种子公司。自留种子是农民的天赋权力。我们需要赶快恢复可自留种子的农业。
一切不能自留种子的农业模式,都没有存在的价值。
种子能生育,人才能生育。种子安全,人才安全,国家才安全

局域网通过模拟http协议共享文件

面对win的共享功能 时灵时不灵 很头疼,就做了一个局域网共享文件应用,实现的机理就是模拟web服务器共享本地文件,无任何依赖。

运行界面如下

QQ截图20191108151259.png

在局域网内其他电脑登陆 当前电脑IP地址 即可访问,如无法访问一般关闭防火墙即可,如果80端口被占用,重新命名文件Sardir[81].exe 再次运行即可改变端口到81

20191107164349.png

下载地址 包含代码

Shardir.zip

使用C# 开发