1 准备SD卡8G以上
编译过程中,会耗用大量存储空间,4G不够用的。
2 更新资源的索引清单
sudo apt-get update (从服务上下载索引清单)
sudo apt-get upgrade (比较索引清单,更新依赖关系)
3 安装 python-dev
sudo apt-get install python-dev
否则在编译SIP时,会提示 fatal error: Python.h: No such file or directory
4 安装libqt4-dev
sudo apt-get install libqt4-dev
否则在编译PyQt时会提示 Error:Make sure you have a working Qt qmake on your PATH or use the -q argument to explicitly specify a working Qt qmake 5 依次安装SIP和PyQt
wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10/PyQt-x11-gpl-4.10.tar.gz
tar vxf PyQt-x11-gpl-4.10.tar.gz
cd PyQt-xll-gpl-4.10
python configure.py
make
make install
wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.14.4/sip-4.14.4.tar.gz
tar vxf sip-4.14.4.tar.gz
cd sip-4.14.4
python configure.py
make
make install
5 运行Python&GUI的源代码
在QLineEdit中输入文本,QLabel上会同步显示。下面这张图是周末两天的成果,虽说很是简陋,但运行成功的一刻,一切都值得了:)。
-----------------------------吐槽一下安装经历-----------------------------------------------------
今天年有一个项目,要做一个可以独立运行的测量系统,想着不连接PC时怎么实现自动测量的问题。前些天一直在弄Python GUI,于是想到了一直闲置着的raspberry Pi, 或许配上一块HDMI监视器可以用。周五了,一边打游戏,一边计划周末干点什么呢?游戏打得顺,心情也好。想好了周六,玩raspberry Pi,周日逛街(没逛成,时间不够用啊)。
周六,一早起来,没吃早饭,就开搞了,重新格式化 SD 卡,拷贝上去Noobs v1.2.1。开机安装系统,一路的傻瓜选项,最后一步忘了选DESKTOP 还是command line 模式,默认用了command line,因为不知道怎么用命令启动desktop,又重装了一遍,会的朋友请留言指导一下,谢谢了。
---------- 测试python
进入系统了,
先输入
print 'hello world'
没问题。
再来一个
import math
print 'math.sin(3.14/2)'
也没问题。
------ 试运行代码
于是想当然的网盘下载了,前些天写的GUI练习代码。运行,提示找不到PyQt4.QtCore, QtGui等,想来这个机器上的python没有PyQt模块,下载PyQt的 tar.gz包,按装之,又没有sip。好吧再下载sip,安装之,又提示找不到python.h。这个怎么回事,没头绪,找找网友的解释吧,哦,缺少开发环境?
-------安装python开发环境和sip(具体做了什么?)
sudo apt-get instyall python-dev
Python-dev安装了以后果然好了,SIP.4.14.4可以编译了,
------安装Qt4开发包和PyQt
切到PyQt的文件夹,python configure.py,提示找不到 qt qmake。这是怎么回事,网友说要装Qt,那为啥说没qmake呢?找了半天答案,原来qmake 是包含在qt包的里,一般安装时就会带的,试过仅仅安装qmake,没用( sudo apt-get install qt4-qmake)。qt官网下载那个安装包可大了,怎么办,因为用的是debian raspberry,就搜索了一下 debian Qt,找找有没有源以及安装包的名称。找到了以下的地址,http://packages.debian.org/unstable/main/qt-sdk 看了以后忽然开朗,安装libqt4-dev好像是可以的。果断sudo apt-get install libqt4-dev.好像是找到了资源包,可以下载不下来。根据提示用了一下sudo apt-get update ,重新sudo apt-get install libqt4-dev,问题解决了,原来资源索引更新过时了。第一次,编译PyQt时,中途出错停止了,重启系统后,发现只能进入command line模式,着实让我不知所措。幸好,拔了SD卡,插入笔记本时,意外发现SD卡,基本满了,于是换了8G SD卡,也重新验证了一下遍流程的正确性。
若干没有借鉴意义的过程略去。。。。
扩展阅读
作者忽忽(很不错的自学教程):http://bbs.shumeipai.org/thread-489-2-1.html
来自:http://my.oschina.net/u/63375/blog/152228
编译过程中,会耗用大量存储空间,4G不够用的。
2 更新资源的索引清单
sudo apt-get update (从服务上下载索引清单)
sudo apt-get upgrade (比较索引清单,更新依赖关系)
3 安装 python-dev
sudo apt-get install python-dev
否则在编译SIP时,会提示 fatal error: Python.h: No such file or directory
4 安装libqt4-dev
sudo apt-get install libqt4-dev
否则在编译PyQt时会提示 Error:Make sure you have a working Qt qmake on your PATH or use the -q argument to explicitly specify a working Qt qmake 5 依次安装SIP和PyQt
wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.10/PyQt-x11-gpl-4.10.tar.gz
tar vxf PyQt-x11-gpl-4.10.tar.gz
cd PyQt-xll-gpl-4.10
python configure.py
make
make install
wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.14.4/sip-4.14.4.tar.gz
tar vxf sip-4.14.4.tar.gz
cd sip-4.14.4
python configure.py
make
make install
5 运行Python&GUI的源代码
在QLineEdit中输入文本,QLabel上会同步显示。下面这张图是周末两天的成果,虽说很是简陋,但运行成功的一刻,一切都值得了:)。
-----------------------------吐槽一下安装经历-----------------------------------------------------
今天年有一个项目,要做一个可以独立运行的测量系统,想着不连接PC时怎么实现自动测量的问题。前些天一直在弄Python GUI,于是想到了一直闲置着的raspberry Pi, 或许配上一块HDMI监视器可以用。周五了,一边打游戏,一边计划周末干点什么呢?游戏打得顺,心情也好。想好了周六,玩raspberry Pi,周日逛街(没逛成,时间不够用啊)。
周六,一早起来,没吃早饭,就开搞了,重新格式化 SD 卡,拷贝上去Noobs v1.2.1。开机安装系统,一路的傻瓜选项,最后一步忘了选DESKTOP 还是command line 模式,默认用了command line,因为不知道怎么用命令启动desktop,又重装了一遍,会的朋友请留言指导一下,谢谢了。
---------- 测试python
进入系统了,
先输入
print 'hello world'
没问题。
再来一个
import math
print 'math.sin(3.14/2)'
也没问题。
------ 试运行代码
于是想当然的网盘下载了,前些天写的GUI练习代码。运行,提示找不到PyQt4.QtCore, QtGui等,想来这个机器上的python没有PyQt模块,下载PyQt的 tar.gz包,按装之,又没有sip。好吧再下载sip,安装之,又提示找不到python.h。这个怎么回事,没头绪,找找网友的解释吧,哦,缺少开发环境?
-------安装python开发环境和sip(具体做了什么?)
sudo apt-get instyall python-dev
Python-dev安装了以后果然好了,SIP.4.14.4可以编译了,
------安装Qt4开发包和PyQt
切到PyQt的文件夹,python configure.py,提示找不到 qt qmake。这是怎么回事,网友说要装Qt,那为啥说没qmake呢?找了半天答案,原来qmake 是包含在qt包的里,一般安装时就会带的,试过仅仅安装qmake,没用( sudo apt-get install qt4-qmake)。qt官网下载那个安装包可大了,怎么办,因为用的是debian raspberry,就搜索了一下 debian Qt,找找有没有源以及安装包的名称。找到了以下的地址,http://packages.debian.org/unstable/main/qt-sdk 看了以后忽然开朗,安装libqt4-dev好像是可以的。果断sudo apt-get install libqt4-dev.好像是找到了资源包,可以下载不下来。根据提示用了一下sudo apt-get update ,重新sudo apt-get install libqt4-dev,问题解决了,原来资源索引更新过时了。第一次,编译PyQt时,中途出错停止了,重启系统后,发现只能进入command line模式,着实让我不知所措。幸好,拔了SD卡,插入笔记本时,意外发现SD卡,基本满了,于是换了8G SD卡,也重新验证了一下遍流程的正确性。
若干没有借鉴意义的过程略去。。。。
扩展阅读
作者忽忽(很不错的自学教程):http://bbs.shumeipai.org/thread-489-2-1.html
来自:http://my.oschina.net/u/63375/blog/152228
As from my previous question, I asked what the power off button in the corner does. Then somebody said if you boot into the GUI automaticlly, it will give you some options.
My question is,
How to boot into the GUI at start-up?
Thanks in advance.
Assuming that you are using Raspbian, it is actually rather simple to do what you ask. Simply open the terminal, and type in the following:
sudo raspi-config
The following window should show up
Navigate to boot_behaviour and click enter. This should make it so that the GUI interface starts automatically.
if you are using Archlinux, please install X11 server follow steps on Archlinux Beginners Guide first. and install your favorite WM,
1.Add those line to your ~/.xinitrc
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
exec openbox-session ## i'm using openbox
#exec awesome
2.Start X when login, add the following to bottom of ~/.bash_profile if you use bash, or ~/.zprofile if your are using zsh. see more on Archlinux Wiki
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
shareimprove this answer
answered May 3 at 7:17
Yuan He
412
up vote
0
down vote
Read this article which explains how to auto login and auto start desktop http://www.opentechguides.com/how-to/article/raspberry-pi/5/raspberry-pi-auto-start.html
来自:http://raspberrypi.stackexchange.com/questions/7261/how-to-set-my-raspberry-pi-to-boot-into-the-gui
今天玩树莓派,需要安装些东西,老是sudo感觉不方便于是想直接用root。咦···?默认不是空密码?试下密码raspberry。还不对。那是神马??
论他找了下,原来之前用centos习惯了,错觉,错觉!!
树莓派(raspberry)启用root账户:
树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。
debian里root账户默认没有密码,但账户锁定。
当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian
默认用户是pi 密码为raspberry
重新开启root账号,可由pi用户登录后,在命令行下执行
sudo passwd root
执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后在执行
sudo passwd --unlock root
这样就可以解锁root账户了。
好了,搞定!
来自:http://my.oschina.net/quanpower/blog/135196
My question is,
How to boot into the GUI at start-up?
Thanks in advance.
Assuming that you are using Raspbian, it is actually rather simple to do what you ask. Simply open the terminal, and type in the following:
sudo raspi-config
The following window should show up
Navigate to boot_behaviour and click enter. This should make it so that the GUI interface starts automatically.
if you are using Archlinux, please install X11 server follow steps on Archlinux Beginners Guide first. and install your favorite WM,
1.Add those line to your ~/.xinitrc
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
exec openbox-session ## i'm using openbox
#exec awesome
2.Start X when login, add the following to bottom of ~/.bash_profile if you use bash, or ~/.zprofile if your are using zsh. see more on Archlinux Wiki
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
shareimprove this answer
answered May 3 at 7:17
Yuan He
412
up vote
0
down vote
Read this article which explains how to auto login and auto start desktop http://www.opentechguides.com/how-to/article/raspberry-pi/5/raspberry-pi-auto-start.html
来自:http://raspberrypi.stackexchange.com/questions/7261/how-to-set-my-raspberry-pi-to-boot-into-the-gui
今天玩树莓派,需要安装些东西,老是sudo感觉不方便于是想直接用root。咦···?默认不是空密码?试下密码raspberry。还不对。那是神马??
论他找了下,原来之前用centos习惯了,错觉,错觉!!
树莓派(raspberry)启用root账户:
树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的。
debian里root账户默认没有密码,但账户锁定。
当需要root权限时,由默认账户经由sudo执行,Raspberry pi 系统中的Raspbian
默认用户是pi 密码为raspberry
重新开启root账号,可由pi用户登录后,在命令行下执行
sudo passwd root
执行此命令后系统会提示输入两遍的root密码,输入你想设的密码即可,然后在执行
sudo passwd --unlock root
这样就可以解锁root账户了。
好了,搞定!
来自:http://my.oschina.net/quanpower/blog/135196
打造一个产品需要专注与执着,曾经设计出 iPod 的 Tony Fadell 也发挥这种追求极致的精神,开发出可自动调节室内温度的恒温器 Nest。
古老的塑料盒子,几个难看的开关,自 1953 年后,恒温器基本没有发生过太大变化。Nest 赋予恒温器高品质外壳材质与配件,并遵循简约的美学设计,让这一事物变得科技、时尚、现代。
Ars Technica 的 Jacqul Cheng 也买了一个 Nest。经过三个月的使用后,她详细地回顾了这段时间里他使用 Nest 的体验,包括产品的优势与劣势。总的来说, 250 美元的 Nest 值得购买。
那么,除了出色的工业设计以外,Nest 究竟包含了哪些人性化的细节,让人爱不释手?
自动变换的消息提醒样式
Cheng 发现在不同情况下 Nest 的消息提醒样式也会随之发生改变。比如当空调是开启的时候,Nest 的消息背景颜色将变为蓝色;若什么都没有发生,消息的背景颜色就会变为黑色,字体则变为白色。
Nest 的消息提醒方式,有点像我们经常看见的“状态指示灯”,变红变绿就知道机器处于何种状态,以最直接的视觉变化来告诉人们信息——人脑对图像的处理速度要比文字处理速度快,一下子就知道了设备处于何种状态。
自动学习
与传统恒温器最大的不同,Nest 会自动学习,记忆我们的习惯。Cheng 发现 Nest 的“学习时间”大概为一周,如果我们要设置新的温度,那么调整了一周之后,它就会自动记忆。
而且,如果习惯上有一些细微的差别,Nest 也能够分辨出来,并加以记忆。Cheng 以自身为例子,比如希望星期一星期二傍晚 6 点的时候,温度保持在 73 °F;而星期五下午 3 点,星期六下午 4 点时,希望温度保持在 80°F——这些不同时间点不同的要求,Nest 都能够经过一周的学习之后,记忆下来。当下一周来临,便可以放任 Nest 自己去调整,不必自己费心。
自动衡量调温时间
如果你设置了一个新温度,那么 Nest 会计算从现在的气温,调整到预设温度所需要的时间。这个时间的计算在经过几个星期的使用后,会变得非常精确。Cheng 曾经记录几次 Nest 预测的调温时间,然后惊讶地发现,所花的时间相当吻合。
Auto-Away 模式
这也是一个和“自动”有关的功能。如果我们离开自己的家一段时间,不必担心家中的空调会按照恒温器的指示一直运行。Nest 的内部包含一个运动检测器,通过它 Nest 能够知道是否有人在家——如果家中一段时间内没有人,它就会自动关机。
不过,你还可以为恒温器设置最高气温和最低气温。这样,当室温超过多少度的时候,恒温器会自动打开,指示空调调节温度——如果真的有这样的需要。
Cheng 唯一觉得 Auto-Away 模式不好的地方就是,如果我们再家中不经常走动,Nest 可能会自行关机。只不过,这样的情况比较少见。
全平台遥控
由于 Nest 可以和 Wi-Fi 连接,而且公司还开发了移动应用、网页应用,让用户通过 iPhone、Android 设备还有网页来控制温度。意味着,无论你在房间里、沙发上,坐着躺着趴着窝着,都可以设定恒温器的温度,也能够查看恒温器的信息——一个助长懒惰的功能。
总结
从 Cheng 的使用体验,我们可以发现 Nest 最大的优点在于“自动”——自动学习,自动调节温度,自动节省能源——不必费心,它会帮我们将温度调节好,让我们的生活质量更高。它的使用就好像自动洗衣机那样简单,只要经过简单的三两步,设定好条件,它就可以自动帮你完成任务。像这样将高度复杂的任务简单化,才是用户所追求的。
第二个优点“云端化”的遥控方式。在设备严重分裂化的今天,在手机上平板上电脑上都可以查看 Nest 的信息,无疑让人减少了焦虑,只要能够上网的地方,都能够随时查看。Evernote 的经验告诉我,让人摆脱地理、时间的限制,随时随地做某事的体验非常重要。缩短用户达成目标的时间与步骤,这也是产品设计需要考虑的。
来自:http://www.ifanr.com/128459
阅读全文
Raspberry Pi的流行吸引了越来越多的公司进入到廉价单板计算机市场。25美元和35美元型号的Raspberry Pi共售出了120万。由德州仪器雇员创建的BeagleBoard推出了45美元的BeagleBone Black,硬件规格高于Raspberry Pi,采用 1GHz Sitara AM335x ARM Cortex-A8处理器, 512MB DDR3L内存,2GB储存空间,预装Ångström Linux,支持Ubuntu或 Android操作系统,支持连接到3D打印机、盖革计数器、遥控潜艇和LCD触摸屏等。类似的单板Linux PC并不少见,如69美元的ODROID-U配备了1.4Ghz Prime Cortex-A9四核处理器,Mali-400 Quad Core 400MHz,1GB内存;89美元的ODROID-U2配备了 1.7GHz四核处理器,2GB内存,支持Android 4.x和Ubuntu 12.10。
画图Html5包:http://www.rgraph.net/docs/updating-charts-dynamically.html
if (document.all && RGraph.isIE8()) {
alert('[MSIE] Sorry, Internet Explorer 8 is not fast enough to support animated charts');
}
注意:不支持IE8,经测试FF,Chrome都支持。
sudo apt-get install nodejs npm //npm 才能安装nodejs的扩展
sudo npm install serialport
来自:http://alexandre.alapetite.fr/doc-alex/raspberrypi-nodejs-arduino/index.en.html
if (document.all && RGraph.isIE8()) {
alert('[MSIE] Sorry, Internet Explorer 8 is not fast enough to support animated charts');
}
注意:不支持IE8,经测试FF,Chrome都支持。
sudo apt-get install nodejs npm //npm 才能安装nodejs的扩展
sudo npm install serialport
来自:http://alexandre.alapetite.fr/doc-alex/raspberrypi-nodejs-arduino/index.en.html
在ATMEL的89S51系列的89S51与89C51功能相同,指令兼容。HEX程序无需任何转换可以直接使用。89S51只比89C51增加了一个看门狗功能。
向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H,即可激活看门狗。
汇编程序如下:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
C51程序如下:
在AT89X51.h声明文件中增加一行 sfr WDTRST = 0xA6来声明看门狗寄存器。
sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E; //先送1E
WDTRST=0xE1; //后送E1
喂狗指令与激活相同:
WDTRST=0x1E;
WDTRST=0xE1;
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。
阅读全文
向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H,即可激活看门狗。
汇编程序如下:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
C51程序如下:
在AT89X51.h声明文件中增加一行 sfr WDTRST = 0xA6来声明看门狗寄存器。
sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E; //先送1E
WDTRST=0xE1; //后送E1
喂狗指令与激活相同:
WDTRST=0x1E;
WDTRST=0xE1;
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。
阅读全文
严泽远 10:08:42
我用的是STC12C5628AD
回忆未来-向东-Jàck 13:08:22
AT89S52有软件喂狗,但是STC12C5A60S2 单片机有硬件看门狗,用哪个好呢?
张彦欣单片机 13:59:27
AT89S52有看门狗?
回忆未来-向东-Jàck 14:11:23
STC12C5A60S2 这个也需要写代码喂狗?
回忆未来-向东-Jàck 14:13:50
STC12C5A60S2 这个自己带PWM,我用AT89S52的定时器产生也成,但是好像时序有点问题,如果不关中断的话。所以,STC12C5A60S2 感觉要稳定点儿,兄弟怎么看?
张彦欣单片机 14:15:19
是的。
用单片机做的温度监控系统,ds18b20采集温度,现在还要输出PWM波频率为100HZ,应该如何实现?求大神指点
用低定时器中断时不行的,会使ds18b20输出错误,若在ds18b20程序中关中断,pwm波会有断续。
我告诉你为什么:
因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。要解决此问题建议你采用带硬件PWM的MCU,或者将18B20通讯代码放在中断服务程序内部,如果采用后一种方式,PWM计时时间请算上18B20通讯的时间。
这是一定不行的,定时器写的pwm是会破坏18b20的时序的;
如果时间允许序的话,即pwm高(低)电平时间大于读写18b20的时间;我建议你在每个pwm的高(低)电平的时候进行18b20的操作;
若时间不允许的话,那么只能在定时器中加上18b20的读取时间了,这样将会很麻烦;
以上仅供参考。
稍微高级一点的MCU应该带有PWM寄存器吧,STC也有类似40个引脚的增强型的单片机,如:stc12c5a60s2
http://item.taobao.com/item.htm?spm=a230r.1.10.210&id=9929702075
书:“十五”高等院校规划教材:《增强型8051单片机实用开发技术》
好多地都没有货了,直接购买PDF版本:http://item.taobao.com/item.htm?spm=a230r.1.10.86.WziaXb&id=16258074740
百度文库PWM简单代码:http://wenku.baidu.com/view/f4ef50ec856a561252d36fcb.html
淘宝上有卖开发板的,找到两家便宜的店:
http://item.taobao.com/item.htm?spm=a230r.1.10.208.JW2dkE&id=14811238438&_u=u19u1s735c
对于PWM输出的硬件设计PPT:http://wenku.baidu.com/view/75758588cc22bcd126ff0ca3.html
这样的设计势必要对应程序:http://wenku.baidu.com/view/f02443bd960590c69ec3760f.html
更简单的PWM设置链接:http://wenku.baidu.com/view/f4ef50ec856a561252d36fcb.html
,比如有独立的PWM模块,AT24C04等,和AT系列的单片机不同点在于没有仿真罢了。我遇到这种问题是直接在读取温度时就把中断关闭,不让PWM的中断打扰,读取温度的时间应该很短,影响不大,By:jack
STC12C5A60S2能直接替换STC89C52开发板的上的STC89C52单片机吗?
是40引脚的吧 是的话 应该可以
单片机其他外延模块 LED LCD 蜂鸣器 彩灯之类的 需要单片机来的信号都是TTL信号 单片机的电压变化都是一致的 可以进行替换 芯片只要能实现引脚高低信号电压的一致就没问题
您好:
可以的。STC12C5A60S2和STC89C52引脚兼容,前者只是P0口复用了AD,内部资料多了点。
http://zhidao.baidu.com/question/206521917.html?fr=qrl&cid=93&index=1
STC12C5A60S2开了两路PWM,还能不能开定时器0中断啊
可以的,STC12C5A60S2的PWM是独立的硬件模块,不耗STC12C5A60S2的指令执行,所以可以开定时器0中断以及处理其它任务
STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同;特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器,串口1可以使用定时器1作为波特率发生器,也可以使用独立波特率发生器作为波特率发生器;而串口2只能使用独立波特率发生器作为波特率发生器。
一个基础板兼容多种STC和ATMel的单片机板:
http://item.taobao.com/item.htm?spm=a230r.1.10.56.zM593N&id=18138913000
答:支持STC89C52、STC12C5A60S2、AT89C51、AT89C52、AT89S51、AT89S52等最常用的51系列单片机。除此之外,还支持其它40脚的51系列单片机以及ATmega16!STC89C52、STC12C5A60S2可以用串口直接下载程序
DS18B20用N次定时中断读取,比如4MS中断一次,第1次复位18B20,
第2次18B20引脚置高,第3次发出转换命令 搜索器件,并启动,到第40次时再复位18B20,41次引脚置高,42次读取命令,43次读取数据。也就是说读取一次温度,需要中断43次,整个过程都在中断中执行。pwm就可以用中断了,18B20也不会读取错误了。希望对你有帮助。
实时是不行了,这儿可以参考一下时间错位的办法:http://bbs.icbuy.com/thread-57813-1-1.html
STC12C5A60S2单片机双串口,为什么串口1用独立波特率发生器时还要使能定时器(0/1)并允许定时器中断?
串口1波特率可使用定时器1或者独立波特率发生器,使用定时器1时做波特率发生时,你就不能用定时器1了,使用独立波特率发生器时,定时器1得到释放,你可以随时使用;此时你使能定时器(0/1)并允许定时器中断只是为了释放定时器,当然你用不到定时器中断,也可以关掉,对波特率无影响的
STC单片机11.0592晶振实现115200波特率串口通信
在8051系列单片机如:89S51、89C51 这些单片机上,用11.0592M晶振实现115200波特率通信,几乎是不可能的。
如果换了STC单片机,例如在STC12C5A60S2实现115200的高速通信就相当简单了。
因为,STC12单片机有独立的波特率发生器。
#include "STC12C5A60S2.H"
#include "stdio.h"
void init_uart()
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
}
char putchar (unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
return SBUF;
}
记得头文件加上 stdio.h,然后在代码里实现 putchar 函数,这样你就可以很方便的用 printf函数进行串口输出了。
例如
int hh=0,mm=0,ss=0;
printf("现在的时间:%d:%d:%d\r\n", hh,mm,ss);
是不是串口输出变简单多了。
阅读全文
我用的是STC12C5628AD
回忆未来-向东-Jàck 13:08:22
AT89S52有软件喂狗,但是STC12C5A60S2 单片机有硬件看门狗,用哪个好呢?
张彦欣单片机 13:59:27
AT89S52有看门狗?
回忆未来-向东-Jàck 14:11:23
STC12C5A60S2 这个也需要写代码喂狗?
回忆未来-向东-Jàck 14:13:50
STC12C5A60S2 这个自己带PWM,我用AT89S52的定时器产生也成,但是好像时序有点问题,如果不关中断的话。所以,STC12C5A60S2 感觉要稳定点儿,兄弟怎么看?
张彦欣单片机 14:15:19
是的。
用单片机做的温度监控系统,ds18b20采集温度,现在还要输出PWM波频率为100HZ,应该如何实现?求大神指点
用低定时器中断时不行的,会使ds18b20输出错误,若在ds18b20程序中关中断,pwm波会有断续。
我告诉你为什么:
因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。要解决此问题建议你采用带硬件PWM的MCU,或者将18B20通讯代码放在中断服务程序内部,如果采用后一种方式,PWM计时时间请算上18B20通讯的时间。
这是一定不行的,定时器写的pwm是会破坏18b20的时序的;
如果时间允许序的话,即pwm高(低)电平时间大于读写18b20的时间;我建议你在每个pwm的高(低)电平的时候进行18b20的操作;
若时间不允许的话,那么只能在定时器中加上18b20的读取时间了,这样将会很麻烦;
以上仅供参考。
稍微高级一点的MCU应该带有PWM寄存器吧,STC也有类似40个引脚的增强型的单片机,如:stc12c5a60s2
http://item.taobao.com/item.htm?spm=a230r.1.10.210&id=9929702075
书:“十五”高等院校规划教材:《增强型8051单片机实用开发技术》
好多地都没有货了,直接购买PDF版本:http://item.taobao.com/item.htm?spm=a230r.1.10.86.WziaXb&id=16258074740
百度文库PWM简单代码:http://wenku.baidu.com/view/f4ef50ec856a561252d36fcb.html
淘宝上有卖开发板的,找到两家便宜的店:
http://item.taobao.com/item.htm?spm=a230r.1.10.208.JW2dkE&id=14811238438&_u=u19u1s735c
对于PWM输出的硬件设计PPT:http://wenku.baidu.com/view/75758588cc22bcd126ff0ca3.html
这样的设计势必要对应程序:http://wenku.baidu.com/view/f02443bd960590c69ec3760f.html
更简单的PWM设置链接:http://wenku.baidu.com/view/f4ef50ec856a561252d36fcb.html
,比如有独立的PWM模块,AT24C04等,和AT系列的单片机不同点在于没有仿真罢了。我遇到这种问题是直接在读取温度时就把中断关闭,不让PWM的中断打扰,读取温度的时间应该很短,影响不大,By:jack
STC12C5A60S2能直接替换STC89C52开发板的上的STC89C52单片机吗?
是40引脚的吧 是的话 应该可以
单片机其他外延模块 LED LCD 蜂鸣器 彩灯之类的 需要单片机来的信号都是TTL信号 单片机的电压变化都是一致的 可以进行替换 芯片只要能实现引脚高低信号电压的一致就没问题
您好:
可以的。STC12C5A60S2和STC89C52引脚兼容,前者只是P0口复用了AD,内部资料多了点。
http://zhidao.baidu.com/question/206521917.html?fr=qrl&cid=93&index=1
STC12C5A60S2开了两路PWM,还能不能开定时器0中断啊
可以的,STC12C5A60S2的PWM是独立的硬件模块,不耗STC12C5A60S2的指令执行,所以可以开定时器0中断以及处理其它任务
STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同;特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器,串口1可以使用定时器1作为波特率发生器,也可以使用独立波特率发生器作为波特率发生器;而串口2只能使用独立波特率发生器作为波特率发生器。
一个基础板兼容多种STC和ATMel的单片机板:
http://item.taobao.com/item.htm?spm=a230r.1.10.56.zM593N&id=18138913000
答:支持STC89C52、STC12C5A60S2、AT89C51、AT89C52、AT89S51、AT89S52等最常用的51系列单片机。除此之外,还支持其它40脚的51系列单片机以及ATmega16!STC89C52、STC12C5A60S2可以用串口直接下载程序
DS18B20用N次定时中断读取,比如4MS中断一次,第1次复位18B20,
第2次18B20引脚置高,第3次发出转换命令 搜索器件,并启动,到第40次时再复位18B20,41次引脚置高,42次读取命令,43次读取数据。也就是说读取一次温度,需要中断43次,整个过程都在中断中执行。pwm就可以用中断了,18B20也不会读取错误了。希望对你有帮助。
实时是不行了,这儿可以参考一下时间错位的办法:http://bbs.icbuy.com/thread-57813-1-1.html
STC12C5A60S2单片机双串口,为什么串口1用独立波特率发生器时还要使能定时器(0/1)并允许定时器中断?
串口1波特率可使用定时器1或者独立波特率发生器,使用定时器1时做波特率发生时,你就不能用定时器1了,使用独立波特率发生器时,定时器1得到释放,你可以随时使用;此时你使能定时器(0/1)并允许定时器中断只是为了释放定时器,当然你用不到定时器中断,也可以关掉,对波特率无影响的
STC单片机11.0592晶振实现115200波特率串口通信
在8051系列单片机如:89S51、89C51 这些单片机上,用11.0592M晶振实现115200波特率通信,几乎是不可能的。
如果换了STC单片机,例如在STC12C5A60S2实现115200的高速通信就相当简单了。
因为,STC12单片机有独立的波特率发生器。
#include "STC12C5A60S2.H"
#include "stdio.h"
void init_uart()
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
}
char putchar (unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
return SBUF;
}
记得头文件加上 stdio.h,然后在代码里实现 putchar 函数,这样你就可以很方便的用 printf函数进行串口输出了。
例如
int hh=0,mm=0,ss=0;
printf("现在的时间:%d:%d:%d\r\n", hh,mm,ss);
是不是串口输出变简单多了。
阅读全文
[实践Ok]在CentOS6.2下安装DNS并快速配置实例,共八步,心路历程如下:
背景介绍:
在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网中又是一个地址。
这样在我们在开发时,在上线时就会去修改一下接口,在线下测试时用线下的Url接口,最后的情况是,在SVN的管理中会变得
很混乱,也就是在上线上的版本和线下测试的版本在改动上来回切换,版本号不段的切换,为此,为了解决这个问题,必须引入
自己建立一套内网测试系统的DNS来实现其和外网一样的环境,进而在实际开发中就不会出现因URL的接口包含的不同域名而导致
了代码版本管理的版本号不段攀升。
实际操作:
在Linux下尤其是CentOS这样的免费系统上有Yum这样的包管理工具来安DNS服务器,但是我在实践中发现其并不理想,可能是打出的Rpm包多少有些
不太让人满意,我试过用直接运行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后来在配置DNS时出现这样那样的问题.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么权限问题都试了,但就是搞不定,于是否,
改用源码安装,这样来得更保险此些,操控性也强很多,有人问我,你的人生由谁来操盘:我操!
我的上手安装和配置如下:
一:开始安装DNS服务器Bind:
下载 bind http://www.isc.org,解压bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
进入 bind-9.9.1-P1.tar.gz文件夹
cd bind-9.9.1-P1
创建安装目录,我是安装在 /usr/local/named
mkdir /usr/local/named
编译,指定安装目录,指定man目录,开启多线程支持(测试环境也就没有必要搞多线程了,要整看帮助。)
./configure --prefix=/usr/local/named
Make 大约需要几分钟,只要不报错就继续下去。
make
Make install 安装
make install
没有报错,就表示安装成功了。
创建以下目录以备用
mkdir /usr/local/named/namedb
二:开始配置bind
创建 rndc.conf文件,用bind自带程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf //一直死在这儿了,只得强制终止。
查原因,在网上搜索:linux安装dns,rndc-confgen没反应,哈,有一篇文章说到点上了,
Url:http://www.nginxs.com/linux/43.html,他说是,摘录如下:
在官方网站上看到这么一条信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)
start typing:
rndc-confgen: generate key: out of entropy
大概意思就是服务器上没有random产生器,这种情况下我们就手动伪造一个文件代替/dev/random的功能
###新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 帮助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
-a: generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
-b bits: from 1 through 512, default 128; total length of the secret
-c keyfile: specify an alternate key file (requires -a)
-k keyname: the name as it will be used in named.conf and rndc.conf
-p port: the port named will listen on and rndc will connect to
-r randomfile: a file containing random data
-s addr: the address to which rndc should connect
-t chrootdir: write a keyfile in chrootdir as well (requires -a)
-u user: set the keyfile owner to “user” (requires -a)
,上面这一句是核心,自己整个Random文件是桥梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把这个named.conf放在etc的文件夹子下:/usr/local/named/etc/named.conf。
ok 问题解决了,接下来我们配置 我们的 域名服务器吧。
三:配置篇
编辑named.conf
# vi /usr/local/named/etc/named.conf
写入以下内容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,刚好倒过来。
退出,保存。
创建并编辑 localhost.zone 文件
vi /usr/local/named/localhost.zone
写入以下内容:
创建并编辑 localhost.rev 文件
# vi /usr/local/named/localhost.rev
因前面在,51test.com这个是在其他网页上抄过来的简单示例,于是也就顺便把文件也贴上:
vi /usr/local/named/51test.com.zone
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
配置注意事项:
配置文件中的 "@" 符号前不能有任何空白字符
配置文件中的 "IN" 字符前必须有空格或TAB
到此,配置大功告成。
四:
下载一个named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,从这儿下载:
http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209
特别注意:bind的配置文档是区分大小写的,因现在那个FTP好像下载不了,于是我也贴下面。
vi /usr/local/named/named.ca
五:运行Bind程序,如下方式加载配置文件启动,加上调试信息参数:
如果运行结果最后一行显示Running
表明安装并启动成功。
最后需要注意的内容是不要忘了是否真正的开启服务器端口(以下是named.conf文件中端口的设置语句,可以看到端口号是 53:telnet x.x.x.x 53)
当然也可以用:nmap localhost ,没有yum安装,这种小工具问题不大用yum来做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
9000/tcp open cslistener
端口号是 53就是DNS Bind的端口。
六:停止及启动:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root 19024 0.0 1.2 10624 6216 pts/0 T 03:00 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+ 已杀死 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
七:本机测试,外部机器测试是否dns生效:
vi /etc/resolv.conf
加上,去掉注释其他Dns的Ip值:
nameserver 192.168.225.128
启动Dns后,清楚Bind服务器上的Dns缓存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush
root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms
八:将服务设置为开机自启,把named 添加到启动项,随操作系统一起启动即可:
但是,我们现在是源码的安装,So,得这样子喔。
修改来自Apache里的启动shell(参看一下自启动的标准),也可以不用修改,直接如下也成,内容如下:
1)保存为/etc/init.d/dns
脚本执行权限添加:
2)chmod -R a+x /etc/init.d/dns //env: /etc/init.d/dns: 权限不够 ,必须给加上。
3)把脚本拷贝至/etc/init.d/目录下,执行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再执行:
chkconfig --add dns //解释:相当于Windows下的自动启动服务,特别要注意:chkconfig –add dns的时候,出现dns服务不支持chkconfig。
如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,还有描述,如上,必须得加上描述等。
chkconfig --levels dns345 on //也成
开机启动设置完毕:
service dns start
-----------------------------------------------
下次一开机也就会运行这个脚本,以启动自己定义的Dns服务器。
启动后,查看是否自己就启动了呢?如下:
果然,又启动起来了,大功告成,整完收工。
Dns服务器从安装到调试配置并测试完成,Eof。Write and Opt By:jackxiang 2012/06/17 20:30:00
后来,我自己配置了一个新的域名:naimanqi.com.cn ,我的Linux机器IP是:192.168.1.105
修改配置文件:
1)共用如下:
3)反向解析文件:
4)正向解析的文件:
注意这一行: IN A 192.168.1.105
这个目的是把浏览器访问:naimanqi.com.cn这个域名也给解析到IP: 192.168.1.105上来,跟在后面的www IN A 192.168.1.105 这个是对www解析的,其实它是一个二级域名和admin 这种二级域名是一个意思:admin IN A 192.168.1.105 。。。EOF。
最后,可以这样玩这个DNS,这个CentOs6.3的Linux 不是建立在这个NAT下的嘛,后修改为Bridge(桥连),这样后,反正是在一个网段内(路由器下),把自己外网的这台Windows下的机器的DNS由192.168.1.1修改为:192.168.1.105,这样既可以调试刚才配置的内部DNS进行调试,也可 以访问外网,为什么呢?是因为:
是因,内部DNS没有找到那个地址后,它自动转给上一级DNS去了,后得到那个外部网站的IP地址了。但修改为NAT后,好像启动Centos里的DNS后,再在Windows上修改IP为桥连后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建议用桥连方式来开发,少用NAT方式,这样可以在一个路由器下的电脑都可以配置上这个Dns来访问该网站和开发网部(samba),很是方便,而DNS设置后,如果没有这个网站在内网,它便会访问外网,这种机制也是很好的。
背景介绍:
在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网中又是一个地址。
这样在我们在开发时,在上线时就会去修改一下接口,在线下测试时用线下的Url接口,最后的情况是,在SVN的管理中会变得
很混乱,也就是在上线上的版本和线下测试的版本在改动上来回切换,版本号不段的切换,为此,为了解决这个问题,必须引入
自己建立一套内网测试系统的DNS来实现其和外网一样的环境,进而在实际开发中就不会出现因URL的接口包含的不同域名而导致
了代码版本管理的版本号不段攀升。
实际操作:
在Linux下尤其是CentOS这样的免费系统上有Yum这样的包管理工具来安DNS服务器,但是我在实践中发现其并不理想,可能是打出的Rpm包多少有些
不太让人满意,我试过用直接运行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后来在配置DNS时出现这样那样的问题.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么权限问题都试了,但就是搞不定,于是否,
改用源码安装,这样来得更保险此些,操控性也强很多,有人问我,你的人生由谁来操盘:我操!
我的上手安装和配置如下:
一:开始安装DNS服务器Bind:
下载 bind http://www.isc.org,解压bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
进入 bind-9.9.1-P1.tar.gz文件夹
cd bind-9.9.1-P1
创建安装目录,我是安装在 /usr/local/named
mkdir /usr/local/named
编译,指定安装目录,指定man目录,开启多线程支持(测试环境也就没有必要搞多线程了,要整看帮助。)
./configure --prefix=/usr/local/named
Make 大约需要几分钟,只要不报错就继续下去。
make
Make install 安装
make install
没有报错,就表示安装成功了。
创建以下目录以备用
mkdir /usr/local/named/namedb
二:开始配置bind
创建 rndc.conf文件,用bind自带程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf //一直死在这儿了,只得强制终止。
查原因,在网上搜索:linux安装dns,rndc-confgen没反应,哈,有一篇文章说到点上了,
Url:http://www.nginxs.com/linux/43.html,他说是,摘录如下:
在官方网站上看到这么一条信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)
start typing:
rndc-confgen: generate key: out of entropy
大概意思就是服务器上没有random产生器,这种情况下我们就手动伪造一个文件代替/dev/random的功能
###新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 帮助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
-a: generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
-b bits: from 1 through 512, default 128; total length of the secret
-c keyfile: specify an alternate key file (requires -a)
-k keyname: the name as it will be used in named.conf and rndc.conf
-p port: the port named will listen on and rndc will connect to
-r randomfile: a file containing random data
-s addr: the address to which rndc should connect
-t chrootdir: write a keyfile in chrootdir as well (requires -a)
-u user: set the keyfile owner to “user” (requires -a)
,上面这一句是核心,自己整个Random文件是桥梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把这个named.conf放在etc的文件夹子下:/usr/local/named/etc/named.conf。
ok 问题解决了,接下来我们配置 我们的 域名服务器吧。
三:配置篇
编辑named.conf
# vi /usr/local/named/etc/named.conf
写入以下内容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,刚好倒过来。
退出,保存。
创建并编辑 localhost.zone 文件
vi /usr/local/named/localhost.zone
写入以下内容:
创建并编辑 localhost.rev 文件
# vi /usr/local/named/localhost.rev
因前面在,51test.com这个是在其他网页上抄过来的简单示例,于是也就顺便把文件也贴上:
vi /usr/local/named/51test.com.zone
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
配置注意事项:
配置文件中的 "@" 符号前不能有任何空白字符
配置文件中的 "IN" 字符前必须有空格或TAB
到此,配置大功告成。
四:
下载一个named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,从这儿下载:
http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209
特别注意:bind的配置文档是区分大小写的,因现在那个FTP好像下载不了,于是我也贴下面。
vi /usr/local/named/named.ca
五:运行Bind程序,如下方式加载配置文件启动,加上调试信息参数:
如果运行结果最后一行显示Running
表明安装并启动成功。
最后需要注意的内容是不要忘了是否真正的开启服务器端口(以下是named.conf文件中端口的设置语句,可以看到端口号是 53:telnet x.x.x.x 53)
当然也可以用:nmap localhost ,没有yum安装,这种小工具问题不大用yum来做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
3306/tcp open mysql
9000/tcp open cslistener
端口号是 53就是DNS Bind的端口。
六:停止及启动:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root 19024 0.0 1.2 10624 6216 pts/0 T 03:00 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+ 已杀死 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
七:本机测试,外部机器测试是否dns生效:
vi /etc/resolv.conf
加上,去掉注释其他Dns的Ip值:
nameserver 192.168.225.128
启动Dns后,清楚Bind服务器上的Dns缓存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush
root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms
八:将服务设置为开机自启,把named 添加到启动项,随操作系统一起启动即可:
但是,我们现在是源码的安装,So,得这样子喔。
修改来自Apache里的启动shell(参看一下自启动的标准),也可以不用修改,直接如下也成,内容如下:
1)保存为/etc/init.d/dns
脚本执行权限添加:
2)chmod -R a+x /etc/init.d/dns //env: /etc/init.d/dns: 权限不够 ,必须给加上。
3)把脚本拷贝至/etc/init.d/目录下,执行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再执行:
chkconfig --add dns //解释:相当于Windows下的自动启动服务,特别要注意:chkconfig –add dns的时候,出现dns服务不支持chkconfig。
如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,还有描述,如上,必须得加上描述等。
chkconfig --levels dns345 on //也成
开机启动设置完毕:
service dns start
-----------------------------------------------
下次一开机也就会运行这个脚本,以启动自己定义的Dns服务器。
启动后,查看是否自己就启动了呢?如下:
果然,又启动起来了,大功告成,整完收工。
Dns服务器从安装到调试配置并测试完成,Eof。Write and Opt By:jackxiang 2012/06/17 20:30:00
后来,我自己配置了一个新的域名:naimanqi.com.cn ,我的Linux机器IP是:192.168.1.105
修改配置文件:
1)共用如下:
3)反向解析文件:
4)正向解析的文件:
注意这一行: IN A 192.168.1.105
这个目的是把浏览器访问:naimanqi.com.cn这个域名也给解析到IP: 192.168.1.105上来,跟在后面的www IN A 192.168.1.105 这个是对www解析的,其实它是一个二级域名和admin 这种二级域名是一个意思:admin IN A 192.168.1.105 。。。EOF。
最后,可以这样玩这个DNS,这个CentOs6.3的Linux 不是建立在这个NAT下的嘛,后修改为Bridge(桥连),这样后,反正是在一个网段内(路由器下),把自己外网的这台Windows下的机器的DNS由192.168.1.1修改为:192.168.1.105,这样既可以调试刚才配置的内部DNS进行调试,也可 以访问外网,为什么呢?是因为:
是因,内部DNS没有找到那个地址后,它自动转给上一级DNS去了,后得到那个外部网站的IP地址了。但修改为NAT后,好像启动Centos里的DNS后,再在Windows上修改IP为桥连后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建议用桥连方式来开发,少用NAT方式,这样可以在一个路由器下的电脑都可以配置上这个Dns来访问该网站和开发网部(samba),很是方便,而DNS设置后,如果没有这个网站在内网,它便会访问外网,这种机制也是很好的。
今天下载了一个SecureCRT5.1.3中文版,安装完以后,将我原来用的英文版的config文件夹复制到中文版默认文件夹下,可是登陆路由器的时候提示“数据库未找到防火墙"none”这个会话将尝试连接”确定以后就可以连接上。
主要是因为中文版中,在.ini文件(包括默认文件和登陆文件)认为S:"Firewall Name"=无,是没有防火墙。而英文版中是S:"Firewall Name"=None,这样中文版就会认为有一个名字为None的防火墙,因此会提示说没有找到名字为"None"的防火墙。把这个None改成“无”就好了。
反之,把“无”改为“None”即可。注意,区分大小写。
操作步骤:
选项->全局选项->常规->配置文件夹->找到这们folder的位置后,再直接:查找所有的ini文件,找到出现未找到防火墙None的这个ip的ini,打开这个ini后,将"Firewall Name"=无 修改为"Firewall Name"=None,及可。当然你要是嫌弃麻烦,也可以批量脚本替换。注意:None中的N是大写。
主要是因为中文版中,在.ini文件(包括默认文件和登陆文件)认为S:"Firewall Name"=无,是没有防火墙。而英文版中是S:"Firewall Name"=None,这样中文版就会认为有一个名字为None的防火墙,因此会提示说没有找到名字为"None"的防火墙。把这个None改成“无”就好了。
反之,把“无”改为“None”即可。注意,区分大小写。
操作步骤:
选项->全局选项->常规->配置文件夹->找到这们folder的位置后,再直接:查找所有的ini文件,找到出现未找到防火墙None的这个ip的ini,打开这个ini后,将"Firewall Name"=无 修改为"Firewall Name"=None,及可。当然你要是嫌弃麻烦,也可以批量脚本替换。注意:None中的N是大写。
背景:这块一般是这样的,linux是什么用户登录就是什么用户的home下,如root用户就是/root,如果xiangdong就是/home/xiangdong。这块可以在用c语言进行切换时伪装成root,文章如下:https://jackxiang.com/post/7556/ 。
用Svn时会有一种需求是需要换个帐号测试一下什么的,但往往有缓存,于是需要清理下才行:
一搬来说在客户端清理一下即可,经过实践是Ok的,如下:
1、在项目上右键,选择TortoiseSVN-->settings,
2、在弹出的TortoiseSVN Settings页面中选择“Saved Data”选项,
3、然后点击“Authentication data”对应的“Clear”按钮,清除一下之前的认证信息就可以了。
下次,就会要求输入用户名和密码,OK!
=============下面这个没有试过==================
svn客户端取消认证缓存设置,需要两个步骤:
(1)修改配置文件,使下次登录时不记录密码
windows环境,在开始菜单->运行输入:%appdata%/subversion,找到config文件【反正自己找到即可】;
unix/linux环境,编辑~/.subversion/config文件。这个试过可以的。
分别对以下两行取消注释、然后保存退出;
# store-passwords = no
# store-auth-creds = no
(2)删除认证缓存设置
windows环境,删除:%appdata%/subversion/auth目录
unix/linux环境执行:rm -rf ~/.subversion/auth
windows 和 linux下 清除svn保存的账号密码信息:
==================================
windows下
方法1:对于TortoiseSVN软件,右键出TortoiseSVN菜单Settings->Saved Data->Authentication data,Clear
或者
方法2:C:\Documents and Settings\Administrator\Application Data\Subversion\auth
删除auth下面的所有文件夹
如果以上2个方法都不起作用,那么只能卸载TortoiseSVN,再重新安装一次,之后上面的2个方法就能起作用了.
==================================
linux下
删除~/.subversion/auth即可
luther@gliethttp:~$ rm -rf ~/.subversion/auth
#:~/.subversion/auth # ls
svn.simple svn.ssl.client-passphrase svn.ssl.server svn.username
这个文件:
./svn.simple/ff163eadbbc43c8f640a9163591xxec0:jackxiang
用Svn时会有一种需求是需要换个帐号测试一下什么的,但往往有缓存,于是需要清理下才行:
一搬来说在客户端清理一下即可,经过实践是Ok的,如下:
1、在项目上右键,选择TortoiseSVN-->settings,
2、在弹出的TortoiseSVN Settings页面中选择“Saved Data”选项,
3、然后点击“Authentication data”对应的“Clear”按钮,清除一下之前的认证信息就可以了。
下次,就会要求输入用户名和密码,OK!
=============下面这个没有试过==================
svn客户端取消认证缓存设置,需要两个步骤:
(1)修改配置文件,使下次登录时不记录密码
windows环境,在开始菜单->运行输入:%appdata%/subversion,找到config文件【反正自己找到即可】;
unix/linux环境,编辑~/.subversion/config文件。这个试过可以的。
分别对以下两行取消注释、然后保存退出;
# store-passwords = no
# store-auth-creds = no
(2)删除认证缓存设置
windows环境,删除:%appdata%/subversion/auth目录
unix/linux环境执行:rm -rf ~/.subversion/auth
windows 和 linux下 清除svn保存的账号密码信息:
==================================
windows下
方法1:对于TortoiseSVN软件,右键出TortoiseSVN菜单Settings->Saved Data->Authentication data,Clear
或者
方法2:C:\Documents and Settings\Administrator\Application Data\Subversion\auth
删除auth下面的所有文件夹
如果以上2个方法都不起作用,那么只能卸载TortoiseSVN,再重新安装一次,之后上面的2个方法就能起作用了.
==================================
linux下
删除~/.subversion/auth即可
luther@gliethttp:~$ rm -rf ~/.subversion/auth
#:~/.subversion/auth # ls
svn.simple svn.ssl.client-passphrase svn.ssl.server svn.username
这个文件:
./svn.simple/ff163eadbbc43c8f640a9163591xxec0:jackxiang
Araxis.Merge比较合并工具,推荐安装,比TSVN内置的TMerge好,安装Araxis.Merge后,可使用Araxis.Merge代替内置TortoiseSVN比对工具,可以更直观方便的进行SVN版本比较和冲突处理。
比对合并工具软件Araxis.Merge(必须设置)
从安装目录解压并安装Araxis.Merge后,可使用Araxis.Merge代替内置TortoiseSVN比对工具,可以更直观方便的进行SVN版本比较和冲突处理。
TortoiseSVN――Setting――External Programs――
(1) Diff Viewer (用于版本比较)
选External单选按钮
在下面填入
"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %base %mine
其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"为Araxis.Merge程序的安装路径
我的配置:
(2) Merge Tool (用于版本合并冲突处理)
选External单选按钮
在下面填入:
"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %theirs %merged %mine其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"为Araxis.Merge程序的安装路径
我的配置:
注:Araxis Merge启动后,可以先点击界面上第二排工具栏中,第三个图标“自动合并到中间(原型)文件”,会自动弹出提示有几个冲突,并把冲突高亮出来,以免修正时漏掉。
有一个哥们写的合并svn冲突的例子放这儿:
比对合并工具软件Araxis.Merge(必须设置)
从安装目录解压并安装Araxis.Merge后,可使用Araxis.Merge代替内置TortoiseSVN比对工具,可以更直观方便的进行SVN版本比较和冲突处理。
TortoiseSVN――Setting――External Programs――
(1) Diff Viewer (用于版本比较)
选External单选按钮
在下面填入
"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %base %mine
其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"为Araxis.Merge程序的安装路径
我的配置:
(2) Merge Tool (用于版本合并冲突处理)
选External单选按钮
在下面填入:
"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %theirs %merged %mine其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"为Araxis.Merge程序的安装路径
我的配置:
注:Araxis Merge启动后,可以先点击界面上第二排工具栏中,第三个图标“自动合并到中间(原型)文件”,会自动弹出提示有几个冲突,并把冲突高亮出来,以免修正时漏掉。
有一个哥们写的合并svn冲突的例子放这儿:
下载文件
小说企鹅凶猛的转载为论题:
早在1999年,新浪就推出了一款IM工具叫作Sinapager,当时这款工具的功能应该说已经很强大了,比腾讯的QQ毫不逊色,而且用户群并不少。只是新浪当时没有专注于IM领域。其实新浪在这个领域也可以说是先行者,同时,OICQ的诞生也并不是一帆风顺的!
我同事的看法:
新浪是很多产品的先行者,当年霍亮还推出了一款叫新浪魔方的即时通讯工具,界面跟IPHONE一模一样,当时内部交流的时候,一片哗然,这个东西最后也没能上线,还有一款叫TINNY的产品,研发中就下马啦。2010-10-04 22:49
360周鸿祎的看法:
当时谁也不知道QQ今天能做今天这么大啊,再就是腾讯的马化腾把传呼工作的服务的思想融入到了人际的SNS中了,起到了相当大的作用,早期的Sina错过是很多的东西,但都没有做大做强是最要人老命的,呵呵。
我的看法:
优秀的网络寻呼机:SinaPager,这个才是和QQ匹敌的,那个sina魔方是个APP的插件,而只有互联网关系的聚友链做好,后面才能做好APP的sina魔方,这个回头看,是需要先后的顺序的啊。。。
前Sina同事反驳:
炳浩在新浪那么多年,虽然努力支撑,但是新浪搜索引擎还是没落了,但是他从新浪出来不到一年,就搞了一个开心网,为什么在新浪做不了?值得思考啊!
我的感悟:
呵呵,思考的东西太多了,作为一个早期老牌的互联网公司其更多的是需要复盘和沉淀。Sina曾经有一批很德高望重的优秀人才,但最后都陆续的离开了,这个人才为何不能留住,为何没有能发挥其光芒,我还年轻,也需要沉淀和感悟啊,对时机的把握和理想的执着坚持,资本层面的牵引最终必将走向急功近利,短视的悲哀结局,至少这不符合互联网之道,我只看到了这些。
学习Tencent:
互联网很多模式的门槛在哪,大家也每年都在讨论,但结论其实还是人,是团队。 人才战略,是王道,不光是培养人才,而更注重留住人才,让人才最大限度的发挥其光和热,不断提高人才带领梯队,不断提升人才的水平,学习腾讯落实导师制度,开放课程的专业经验总结和拓宽各种能力的配套学习,这个是我作为一个刚毕业的学生进入Sina后3年截止目前的最大的感悟和体会,呵呵。
突然,我想到了sina 博客的莫凡【当时一片混乱他出来摆平了,然后有了sina 博客】,想到了企业邮箱,想到了播客,想到了sina 朋友,我最后想到的是,这是英雄主义的推动,不是机制的推动,这个也是一个隐藏在里面的根源。(注明:这段是我的个人看法,和公司和其他人无关)
最后,里面的主管色彩是个人的观点,对于说如何解决上面的问题的方法也更是没有丝毫的经验,如果过几年我有了,或者有其他人有了还请告诉我,我再接着下面写下去(如果我的博客健在以及该文章还在的话),就是瞎扯蛋一把,没有任何意义,看看笑笑罢了,茶余饭后的谈资罢了。
Jackxiang 2010/10/0423:14
早在1999年,新浪就推出了一款IM工具叫作Sinapager,当时这款工具的功能应该说已经很强大了,比腾讯的QQ毫不逊色,而且用户群并不少。只是新浪当时没有专注于IM领域。其实新浪在这个领域也可以说是先行者,同时,OICQ的诞生也并不是一帆风顺的!
我同事的看法:
新浪是很多产品的先行者,当年霍亮还推出了一款叫新浪魔方的即时通讯工具,界面跟IPHONE一模一样,当时内部交流的时候,一片哗然,这个东西最后也没能上线,还有一款叫TINNY的产品,研发中就下马啦。2010-10-04 22:49
360周鸿祎的看法:
当时谁也不知道QQ今天能做今天这么大啊,再就是腾讯的马化腾把传呼工作的服务的思想融入到了人际的SNS中了,起到了相当大的作用,早期的Sina错过是很多的东西,但都没有做大做强是最要人老命的,呵呵。
我的看法:
优秀的网络寻呼机:SinaPager,这个才是和QQ匹敌的,那个sina魔方是个APP的插件,而只有互联网关系的聚友链做好,后面才能做好APP的sina魔方,这个回头看,是需要先后的顺序的啊。。。
前Sina同事反驳:
炳浩在新浪那么多年,虽然努力支撑,但是新浪搜索引擎还是没落了,但是他从新浪出来不到一年,就搞了一个开心网,为什么在新浪做不了?值得思考啊!
我的感悟:
呵呵,思考的东西太多了,作为一个早期老牌的互联网公司其更多的是需要复盘和沉淀。Sina曾经有一批很德高望重的优秀人才,但最后都陆续的离开了,这个人才为何不能留住,为何没有能发挥其光芒,我还年轻,也需要沉淀和感悟啊,对时机的把握和理想的执着坚持,资本层面的牵引最终必将走向急功近利,短视的悲哀结局,至少这不符合互联网之道,我只看到了这些。
学习Tencent:
互联网很多模式的门槛在哪,大家也每年都在讨论,但结论其实还是人,是团队。 人才战略,是王道,不光是培养人才,而更注重留住人才,让人才最大限度的发挥其光和热,不断提高人才带领梯队,不断提升人才的水平,学习腾讯落实导师制度,开放课程的专业经验总结和拓宽各种能力的配套学习,这个是我作为一个刚毕业的学生进入Sina后3年截止目前的最大的感悟和体会,呵呵。
突然,我想到了sina 博客的莫凡【当时一片混乱他出来摆平了,然后有了sina 博客】,想到了企业邮箱,想到了播客,想到了sina 朋友,我最后想到的是,这是英雄主义的推动,不是机制的推动,这个也是一个隐藏在里面的根源。(注明:这段是我的个人看法,和公司和其他人无关)
最后,里面的主管色彩是个人的观点,对于说如何解决上面的问题的方法也更是没有丝毫的经验,如果过几年我有了,或者有其他人有了还请告诉我,我再接着下面写下去(如果我的博客健在以及该文章还在的话),就是瞎扯蛋一把,没有任何意义,看看笑笑罢了,茶余饭后的谈资罢了。
Jackxiang 2010/10/0423:14
我个人觉得如果是单片机来说中断和查询的写法可能会让单片机在效率上有些不同,毕竟单片机的资源有限,但是对于上位机的PC监控来说呢,查询的消耗并没有消耗多少(这儿是相对于中断来说的),但是如果严谨些,是应该用中断来代替查询的,这儿分别列出中断和查询在linux上的不同写法,以区分出来,以下是示例代码:
阅读全文
阅读全文