物联网开发:云台

关键 字:micropython,  upycraft, windows,

前提,本次尝试使用 pyboard v102开发 硬件,使用环境 windows +upycraft3.0

一、接钱:
#驼机  红色线 3.3V  — pyboard 3.3v

#驼机 灰色线  GND — pyboard GND

#驼机 橙色 数据位  — PYBOARD X3

技术代码如下:

from pyb import servo #导入引用
servo3=pyb.Servo(3)#指定使用X3端口

servo3.angle(-75,500) #向右75旋转

servo3.angle(75,500)#向左转75度

servo3.angle(0,500) #转到0度

ESP8266交叉编译器xtensa-lx106-elf 在Linux下编译与生成

转发来源:https://blog.csdn.net/flyingcys/article/details/71357261

一、编译环境配置

由于编译crosstool-NG依赖编译环境,本次编译在Ubuntu_16.04.2_64bit下进行,gcc版本为5.4.0,make版本为4.1,可通过gcc -v/make -v查看。
文本后续提到的在编译过程中出现的错误都是基于当前环境下的,如编译环境不一致导致其他错误,可按照类似方法解决。
在编译crosstool-NG之前,我们先安装编译需要的软件包,通过以下命令一次性安装完成:
sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
使用apt-get之前先确定下软件下载源在国内还是国外,推荐使用国内的阿里云镜像或163镜像速度比较快,不然下载速度就杯具了!记得下载前先sudo apt-get update下。

二、crosstool_NG下载

ESP8266内置Tensilical L106 32bit微处理器,我们使用的是大侠jcmvbkbc制作的Xtensa系列crosstool-NG,可在https://github.com/jcmvbkbc/crosstool-NG查看crosstool-NG源文件。
在命令行输入:git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git ,git clone -b表示只克隆lx106分支,该分支下总共有30425个文件,git表示网络有些慢,需要一些时间。
经过漫长的等待后Clone终于完成,进入crosstool-NG文件夹,我们可以看到:

1.在该目录下执行:./bootstrap

./configure

make

sudo make install
当然也可分开执行4条依次执行。
其中:
./bootstrap通过autoconf生成.configure
./configure –prefix=`pwd`将检查依赖文件包,并通过–prefix配置安装路径为当前目录。pwd指令前后的为反单引号(tab键上面那个按键)。在linux的bash中,其用法同$()相同,用“括起来的内容为一个变量,`pwd`就是当前目录。
如缺少安装软件包某软件包,./configure将自动终止直至安装完成。
我在安装中出现了如下错误:
1)缺少libtool。
解决方法:sudo apt-get install libtool

发现已经安装了libtool,但是版本为2.4.6-0.1版。版本太高了?只能手动安装了!!

① 删除已安装版本sudo apt-get remove libtool
② 至ftp://ftp.gnu.org/gnu/libtool/下载libtool-1.5.26版,并解压libtool-1.5.26目录
③ 在libtool-1.5.26目录下依次执行
a)./configure
b)make
c)sudo make install
libtool完成安装
2.在该目录下执行:./ct-ng xtensa-lx106-elf

三、crosstool_NG配置

crosstool-NG默认配置也可以编译生成Esp8266交叉工具链,但是编译时间特别长,而且特别容易出错。针对这2点进行一些配置。
在crosstool-NG目录下执行./ct-ng menuconfig进行配置

1.配置多线程编译
“Paths and misc options”->“Number of parallel jobs”

默认为0,设置为4;
这个数字不易过大,常见修改方式:CPU内核数*2;如当前PC的CPU为双核,那这里就设置为4;
以上配置设置完成后,在后续执行./ct-ng build时无需手工指定参数。即无需./ct-ng build.4(其实内部还是通过make -j4去执行)。
2.保存编译中间步骤
“Paths and misc options”->“Debug crosstool-NG”->“Save intermediate steps”

crosstool-NG默认配置下每次编译都是重新开始的,无论上一次编译到哪一步,是否成功!
以上配置设置完成后,在后续执行./ct-ng build
完成以上设置后,保存并退出。

四、crosstool_NG编译

完成以上设置后,在crosstool-NG目录下执行./ct-ng build开始编译。编译过程分多个步骤:
1.下载源码包:本次编译需要的源码包有:
gcc-4.8.2
cloog-0.18.4
binutils-2.24
gdb-7.5.1
gmp-5.1.3.tar
isl-0.12
mpc-1.0.2
mpfr-3.1.2.tar
需要下载的源码包名称及版本在根目录下.config文件内配置。源码包下载至根目录下.build/tarballs目录,配置文件和目录为隐藏目录,在Ubuntu下需要按ctrl+h显示才能看到。.config文件和.build/tarballs目录在后面我们都要用到。

2.自动/手动下载源码包
a)自动下载:
在crosstool-NG目录下执行./ct-ng build及开始编译前的第一步工作,编译依赖包下载,该步骤根据网络情况和服务器情况不同,非常耗时。
在未知源码包名称及版本情况下,可一步一步根据build后日志上显示的源码包文件名、版本号、下载路径去下载,然后放至.build/tarballs。下载完一个后,再执行./ct-ng build来确定下一个包。
b)手动下载:我们通过查看根目录下.config文件,得到源码包名称及版本号。下载完成后全部放至.build/tarballs。以下为下载地址:
gcc-4.8.2:ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/
cloog-0.18.4:http://www.cloog.org/
binutils-2.24:ftp://ftp.gnu.org/gnu/binutils/
gdb-7.5.1:ftp://ftp.gnu.org/gnu/gdb/
gmp-5.1.3.tar:ftp://ftp.gnu.org/gnu/gmp/
isl-0.12:http://isl.gforge.inria.fr/
mpc-1.0.2:ftp://ftp.gnu.org/gnu/mpc/
mpfr-3.1.2.tar:ftp://ftp.gnu.org/gnu/mpfr/
如果在windows系统下下载以上软件,建议不要使用迅雷等下载工具。将以上下载文件copy至.build/tarballs,然后在根目录下执行./ct-ng build。然后开始满足的编译过程,根据电脑配置不同时间不同,需要耐心等待。

可以看到,我们配置的保存编译过程,可以在出错后只从出错未知开始重新编译

如编译过程中binutils_for_host出错,我们可以直接执行 ./ct-ng binutils_for_host+,之前编译过的就不需要重复运行。

一次性成功,耗时27分钟!是不是感觉so easy?
编译完成的交叉编译器在更目录下builds下,文件名为xtensa-lx106-elf

到这里,我们的交叉编译器生成工作已完成了95%,那剩下的5%呢?现在我们就把xtensa-lx106-elf到Ubuntu系统目录下,编译一下esp8266的工程试试!

五、xtensa-lx106-elf测试

1.在build目录下执行sudo cp -f xtensa-lx106-elf /opt并正确配置环境变量,ubuntu下环境变量配置可参照《Linux环境变量设置》一文。
2.
在github上下载最新esp8266的rtos版本sdk至本地
git clone https://github.com/espressif/ESP8266_RTOS_SDK
ESP8266_RTOS_SDK在linux工程运行配置请参照本文博客《ESP8266交叉编译环境搭建之linux篇》一文,这里不再重复叙述。
运行SDK内部的sample,你就会发现,编译出错了,这就是我们剩下的5%的工作。
1)提示缺少stdint.h文件

执行wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
下载并解压至交叉编译器对应文件夹
sudo tar zxvf include.tgz -C /opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/
2)提示缺少libhal.a文件

 

 

ubuntu16.04同时使用 pyhton2.7和3.5,并随意切换

ubuntu16.04中默认已经安装了python2.7和python3.

 

开始,

跳到系统目录 并检测版本
cd /usr

cd /bin

/usr/bin$ ls |grep python

dh_python2
dh_python3
python
python2
python2.7
python2.7-config
python2-config
python3
python3.5
python3.5m
python3m
python-config
x86_64-linux-gnu-python2.7-config
x86_64-linux-gnu-python-config

/usr/bin$ python

Python 2.7.12 (default, Nov 19 2016, 06:48:10)

 

$sudo update-alternatives –install /usr/bin/python python /usr/bin/python2 100

$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python3 150

 

以后可以进行切换了

核心命令

sudo update-alternatives  – -config python

水晶报表有用户数目限制

 

.net自带的水晶报表可以支持多个用户同时访问吗,有用户数量的限制吗?

不注册好像是有用户数目限制的,记得好像是5个
可以,不過你要先改注冊表消除並發限制,像這樣:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.2\Report Application Server\Server]
“PrintJobLimit”=”1000”

[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.2\Report Application Server\InprocServer]
“PrintJobLimit”=”1000”

[HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Report Application Server\Server]
“PrintJobLimit”=”1000”

[HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Report Application Server\InprocServer]

“PrintJobLimit”=”1000”

[HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Report Application Server\Server]
“PrintJobLimit”=”1000”

[HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Report Application Server\InprocServer]

“PrintJobLimit”=”1000”

ubuntu 下使用 jsoncpp库

做项目的时候需要用c++解析json文件, 之前使用的是 libjson 库, 但当g++ 开启 -std=c++11 选项时, 该库的很多功能不能用, 而且还有一些其他的问题, 不推荐使用. 后来采用的是 jsoncpp 库, 可以在ubuntu下用下面的命令安装该库:

[plain] view plain copy

  1. sudo apt-get libjsoncpp-dev libjsoncpp0

库的头文件安装在/usr/include/jsoncpp中, 库API文档默认在/usr/share/doc/libjsoncpp-dev/jsoncpp-api-html/目录下 . jsoncpp 的github主页上也给出了生成库文档的方法. 使用该库的方法很简单, 在你的程序中加入

  1. #include <jsoncpp/json/json.h>

即可.

具体用法参考API文档, 非常简单.

 

、、、、、、、、、、、、、、、、、、、、、

方法二:

重点内容
一.准备:
1.安装 scons
scons是用Python进行编译的,而Linux大版本都带有Python 所以不用安装,只需安装scons即可。在安装scons是有两种方法:
(1)在终端下命令行安装 sudo apt-get install scons
(2)去网站下载源码包编译安装;(个人建议去网站下载源码包自己编译,这样文件路径比较清楚,命令行的安装路径都是系统默认路径,不便查找)http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz
进入解压目录执行如下命令:
Python setup.py install
然后设置环境变量 export MYSCONS=解压路径

export SCONS_LIB_DIR=$MYSCONS/engine
2.安装 jsoncpp
先去官网下载jsoncpp的源码包
http://sourceforge.net/projects/jsoncpp/files/
接下来一次执行命令:
tar -zxf jsoncpp-src-0.5.0.tar.gz
cd jsoncpp-src-0.5.0
scons platform=linux-gcc
mv libs/linux-gcc-5.4.0/libjson_linux-gcc-5.4.0_libmt.so /lib
mv include/json/ /usr/include

sudo mv libjson_linux-gcc-5.4.0_libmt.a /usr/local/lib/json_5.4.0.a

最后两步的执行时不一样的,看你想把文件方在哪个目录,我是放在/usr/lib 下的,头文件放在/usr/include下;

1、下载工具

JsonCpp

http://sourceforge.net/projects/jsoncpp/files/

比如下载的 jsoncpp-src-0.5.0.tar.gz

$ tar -zxvf jsoncpp-src-0.5.0 -C jsoncpp

说明:

① 安装JsonCpp需要下载JsonCpp和Scon还需要机器上有python

② scons又是一个牛叉的工具,功能和GNU make一样,又比make简单多了。scons是python工具,需要先安装好python。

 

2、安装

(1) 安装 scons

   $ sudo apt-get install scons

(2) 切换到 jsoncpp 目录

   $ python /usr/bin/scons platform=linux-gcc

(3) 生成静态和动态库文件

    在jsoncpp/libs/linux-gcc-4.7目录下

          libjson_linux-gcc-4.7_libmt.a

          libjson_linux-gcc-4.7_libmt.so

    $ sudo mkdir /usr/local/lib

(4) 把两个库文件拷贝到/usr/local/lib目录下

    $ sudo cp libjson_linux-gcc-4.7_libmt.* /usr/local/lib

(5) 将静态库重命名为libjsoncpp.a libjsoncpp.so (mv 命令)

 (6)   切换到 jsoncpp/include/json 目录

         $ sudo mkdir /usr/local/include/jsoncpp

         $ sudo cp * /usr/local/include/jsoncpp

3、使用

(1)包含头文件

#include <jsoncpp/json.h>

(2) 编译

加链接选项    -ljsoncpp

 

在linux下运行程序时,发现了error while loading shared libraries这种错误,解决:

./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory
出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。
一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。
所以,在
sudo gedit /etc/ld.so.conf
中加入/usr/local/lib这一行,保存之后,
再运行:sudo /sbin/ldconfig –v

更新一下配置即可。

Linux下python安装升级步骤详解 | Python2 升级Python3

Linux下python升级步骤 Python2 ->Python3
多数情况下,系统自动的Python版本是2.x
或者yum直接安装的也是2.x
但是,现在多数情况下建议使用3.x
那么如何升级呢?
下面老徐详细讲解升级步骤;

首先下载源tar包
可利用linux自带下载工具wget下载,如下所示:
wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz

下载完成后到下载目录下,解压
tar -xzvf Python-3.3.0.tgz

进入解压缩后的文件夹
cd Python-3.3.0

在编译前先在/usr/local建一个文件夹python3(作为python的安装路径,以免覆盖老的版本)
mkdir /usr/local/python3

开始编译安装
bash ./configure –prefix=/usr/local/python3
make
make install

此时没有覆盖老版本,再将原来/usr/bin/python链接改为别的名字
mv /usr/bin/python /usr/bin/python_old2

再建立新版本python的链接
ln -s /usr/local/python3/bin/python3/usr/bin/python

这个时候输入
python -V

就会显示出python的新版本信息
[idolaoxu@localhost home]# python -V
Python 3.3.0

PS:如果不建立新安装路径python3,而是直接默认安装,则安装后的新python应该会覆盖linux下自带的老版本,也有可能不覆盖,具体看安装过程了,
这个大家可以自己试验下,当然如果还想保留原来的版本,那么这种方法最好不过了。

<pre>
最后扩充下,
这种方法虽然能安装成功,但是它带来了新的问题,比如yum不能正常用了
修改/usr/bin/yum的第一行为:
‘#!/usr/bin/python_old2
就可以了
</pre>
如上是讲解已经存在Python2的情况下如何升级,如果是第一次安装呢?那更简单,有些步骤直接可省去,直接安装就OK

作者:IDO老徐
链接:https://www.jianshu.com/p/e422ea96c376
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。