富家子弟等于温室长大的植物,无论是大树或是什么植物,根部一定不壮,若再放纵他一点,将来他一生辛苦,遇到什么打击,面对逆境他便无法应付,我虽然不是很本事,但我可以说,我这颗小树,是在风雨中,从沙石中长大的。你可以到山上试一试,要拔起从沙石缝中长出来的小植物,是相当费劲。


当然你对i的工作有兴趣,当然你可以做得很好。
香港公司的人要找我,外国公司的人也要找我,我两方面都要照顾,都是这样应付,习惯了,也明白到身处这个职位便要有这种负担!
1、“这第一碗酒,朕要敬给太皇太后孝庄,敬给列祖列宗的在天之灵。朕八岁丧父,九岁丧母,是孝庄太后带着朕,冲破千难险阻,才有今天的大清盛世!孝庄太后,朕想你啊。

还有这第二碗酒,朕要敬给列位臣工,敬给天下子民,敬给今天赴宴的老同年们!六十年来,是你们辅佐朕,保国平安,你们俯首农桑,致使大清的百业兴旺。君、臣、民,三者同德呀,啊!没有你们,记着便没有今日的大清。朕在这儿谢谢你们了。

这第三碗酒啊,朕要敬给朕的死敌们。鳌拜,吴三桂,嘿!郑经,噶尔丹,噢,还有那个朱三太子,啊?嘿,他们都是英雄豪杰呀,啊,他们造就了朕那!他们逼着朕立下了这丰功伟业。朕恨他们,也敬他们。哎,可惜呀,他们都死了,朕寂寞啊!......朕不祝他们死的安宁,祝他们,来生再世再与朕为敌吧!”阅读全文
串口编程
查询硬件的方式:查询方式、中断方式、DMA方式。串口很多是使用中断方式,这种方式一般来讲对CPU比较有效。

UART的操作主要包括以下几个部分:
      数据发送;数据接受;产生中断;产生波特率;Loopback模式;红外模式;自动流控模式;
      串口参数的配置主要包括:波特率、数据位、停止位、流控协议。

在linux下操作串口与操作文件相同。

在使用串口之前必须设置相关配置,包括:波特率、数据位、校验位、停止位等。串口设置由下面结构体实现。
     Struct termios{
                 tcflag_t c_iflag;  /* input flags */
                 tcflag_t c_oflag;  /* output flags */
                 tcflag_t c_cflag;  /* control flags */
                 tcflag_t c_lflag;  /* local flags */
                 cc_t  c_cc[NCCS]; /* control character */
     };

串口配置流程
    1、保存原先串口配置,使用tcgetattr(fd,&oldtio)函数
         struct termios newtio,oldtio;
          tcgetattr(fd,&oldtio);
     2、激活选项,有CLOCAL 和CREAD,用于本地连接和接收使能。
           newtio.c_cflag |= CLOCAL | CREAD
     3、设置波特率,使用函数cfsetispeed、cfsetospeed。
            cfsetipeed(&newtio, B115200);
            cfsetospeed(&newtio, B115200);
     4、设置数据位,需要使用掩码设置。
             newtio.c_cflag &= ~CSIZE;
             newtio.c_cflag |= CS8;
     5、设置奇偶校验位,使用c_cflag和c_iflag。
            设置奇校验:
            newtio.c_cflag |= PARENB;
            newtio.c_cflag |= PARODD;
             newtio.c_iflag |= (INPCK | ISTRIP);
             设置欧校验:
             newtio.c_iflag |= (INPCK | ISTRIP);
             newtio.c_cflag |= PARENB;
             newtio.c_cflag &= ~PARODD;
      6、设置停止位,通过激活c_cflag中的CSTOPB实现。若停止位为1,则清楚CSTOPB,若停止位为2,则  激活CSTOPB。
            newtio.c_cflag &= ~CSTOPB;
      7、设置最少字符和等待时间,对于接受字符和等待时间没有特别要求时,可设为0。
            newtio.c_cc[VTIME] = 0;
            newtio.c_cc[VMIN] = 0;
      8、处理要写入的引用对象
             tcflush函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)
             或输出缓存(用户程序已写,但尚未发送)。
             int tcflush(int filedes, int queue)
              queue数应当是下列三个常数之一:
              TCIFLUSH 刷清输入队列。
              TCOFLUSH 刷清输出队列。
              TCIOFLUSH 刷清输入、输出队列。
       9、激活配置。在完成配置后,需激活配置使其生效。
             使用tsettattr()函数。原型:
              int tcgetattr(int filedes, struct termios *termptr);
              int tcgetattr(int filedes, int opt, const struct termios * termptr);
               tcsetattr的参数opt使我们可以指定在什么时候新的终端属性才起作用。opt可以指定wei下列常数中的一  个:
              TCSANOW 更改立即发生。
               TCSADRAIN 发送了所有输出后更改才发生。若更改输出参数则应使用此选择项。
               TCSAFLUSH 发送了所有输出后更改才发生。更进一步,在更改发生时未读的宋有输入数据都被删除(刷清)
              使用如:tcsetattr(fd, TCSANOW, &newtio)

打开串口
           f d = open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);

           open函数中除普通参数外,另有两个参数O_NOCTTY和O_NDELAY。
           O_NOCTTY:通知linux系统,这个程序不会成为这个端口的控制终端。
            O_NDELAY:通知linux系统不关心DCD信号线所处的状态(端口的另一端是否激活或者停止)
           然后,恢复串口的状态为阻塞状态,用于等待串口数据的读入。用fcntl函数:
            fcntl(fd, F_SETFEL, 0);

           接着, 测试打开的文件描述符是否引用一个终端设备,以进一步确认串口是否正确打开.
            isatty(STDIN_FILENO);


串口读写
            串口的读写与普通文件的读写是一样的,使用read,write函数。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhanghuiliang/archive/2008/05/21/2467040.aspx

        function escape_array($ar)
        {
                if (is_array ( $ar ))
                {
                        foreach ( $ar as $key => $ar_sub )
                        {
                                $ar [$key] = $this->escape_array ( $ar_sub );
                        }
                }
                else if (is_string ( $ar ))
                {
                        $ar = @mysql_escape_string ( $ar );
                }
                return $ar;
        }

1.
条件: magic_quotes_gpc=off
写入数据库的字符串未经过任何过滤处理。从数据库读出的字符串也未作任何处理。

数据:  $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

操作: 将字符串:"snow''''sun" 写入数据库,

结果: 出现sql语句错误,mysql不能顺利完成sql语句,写入数据库失败。

数据库保存格式:无数据。

输出数据格式:无数据。

说明: 对于未经处理的单引号在写入数据库时会使sql语句发生错误。


2.
条件: magic_quotes_gpc=off
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

数据:  $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

操作: 将字符串:"snow''''sun" 写入数据库,

结果: sql语句顺利执行,数据成功写入数据库

数据库保存格式:snow''''sun (和输入一样)

输出数据格式:snow''''sun (和输入一样)

说明: addslashes()函数将单引号转换为'的转义字符使sql语句成功执行,
但\'并未作为数据存入数据库,数据库保存的是snow'''sun 而并不是我们想象的snowsun


3.
条件: magic_quotes_gpc=on
写入数据库的字符串未经过任何处理。从数据库读出的字符串未作任何处理。

数据:  $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

操作: 将字符串:"snow''''sun" 写入数据库,

结果: sql语句顺利执行,数据成功写入数据库

数据库保存格式:snow''''sun (和输入一样)

输出数据格式:snow''''sun (和输入一样)

说明: magic_quotes_gpc=on 将单引号转换为'的转义字符使sql语句成功执行,
但\'并未作为数据入数据库,数据库保存的是snow'''sun而并不是我们想象的snowsun。


4.
条件: magic_quotes_gpc=on
写入数据库的字符串经过函数addlashes()处理。从数据库读出的字符串未作任何处理。

数据:  $data="snow''''sun" ; (snow和sun之间是四个连续的单引号).

操作: 将字符串:"snow''''sun" 写入数据库,

结果: sql语句顺利执行,数据成功写入数据库

数据库保存格式:snowsun (添加了转义字符)

输出数据格式:snowsun (添加了转义字符)

说明: magic_quotes_gpc=on 将单引号转换为的转义字符使sql语句成功执行,
addslashes又将即将写入数据库的单引号转换为,后者的转换被作为数据写入
数据库,数据库保存的是snowsun

总结如下:

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

补充:

magic_quotes_gpc 作用范围是:WEB客户服务端;作用时间:请求开始时,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据
获取网卡名称:


代码:

<?php
/**
        获取机器网卡的物理(MAC)地址
        wwa  $Exp
**/
class GetMacAddr
{
        var $return_array = array(); // 返回带有MAC地址的字串数组
        var $mac_addr;
      
        function GetMacAddr($os_type)
        {
                switch ( strtolower($os_type) )
                {
                        case "linux":
                                $this->forLinux();
                                break;
                        case "solaris":
                                break;
                        case "unix":
                                break;
                        case "aix":
                                break;
                        default:
                                $this->forWindows();
                                break;
                }
              
                $temp_array = array();
                foreach ( $this->return_array as $value )
                {
                        if ( preg_match( "/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i", $value, $temp_array ) )
                        {
                                $this->mac_addr = $temp_array[0];
                                break;
                        }
                }
                unset($temp_array);
                return $this->mac_addr;
        }

        function forWindows()
        {
                @exec("ipconfig /all", $this->return_array);
                if ( $this->return_array )
                        return $this->return_array;
                else{
                        $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
                        if ( is_file($ipconfig) )
                                @exec($ipconfig." /all", $this->return_array);
                        else
                                @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array);
                        return $this->return_array;
                }
        }

        function forLinux()
        {
                @exec("ifconfig -a", $this->return_array);
                return $this->return_array;
        }
}
?>
<?php
$mac = new GetMacAddr(PHP_OS);
echo $mac->mac_addr;
?>


丰都sns

WEB2.0 jackxiang 2009-6-27 19:27
fd9xs.com

fdsns.com
来源:http://blog.21ic.com/user1/2613/archives/2008/48341.html
这个是单个,先弄懂,然后再弄懂多个,在该链接下面有少量的介绍
Asynchronous Input 异步输入模式

#i nclude <termios.h>    
#i nclude <stdio.h>      
#i nclude <unistd.h>      
#i nclude <fcntl.h>      
#i nclude <sys/signal.h>    
#i nclude <sys/types.h>      
      
#define BAUDRATE B38400      
#define MODEMDEVICE "/dev/ttyS1"      

#define _POSIX_SOURCE 1 /* POSIX compliant source */      
#define FALSE 0      
#define TRUE 1      

volatile int STOP=FALSE;
void signal_handler_IO (int status);   /* definition of signal handler */  
                                     // 定义信号处理程序
int wait_flag=TRUE;                   /* TRUE while no signal received */    
                                    // TRUE 代表没有受到信号,正在等待中  
main()   {        
int fd,c, res;  
struct termios oldtio,newtio;  
struct sigaction saio;        
/* definition of signal action */      
// 定义信号处理的结构
char buf[255];        

/* open the device to be non-blocking (read will return immediatly) */    
// 是用非阻塞模式打开设备 read 函数立刻返回,不会阻塞    
    fd = open(MODEMDEVICE, O_RDWR &#124; O_NOCTTY &#124; O_NONBLOCK);    
    if (fd <0) {perror(MODEMDEVICE); exit(-1); }        

/* install the signal handler before making the device asynchronous */    
    // 在进行设备异步传输前,安装信号处理程序    
    saio.sa_handler = signal_handler_IO;    
saio.sa_mask = 0;  
saio.sa_flags = 0;    
saio.sa_restorer = NULL;    
    sigaction(SIGIO,&saio,NULL);  

/* allow the process to receive SIGIO */
// 允许进程接收 SIGIO 信号      
fcntl(fd, F_SETOWN, getpid());    
    /* Make the file descriptor asynchronous (the manual page says only  
O_APPEND and O_NONBLOCK, will work with F_SETFL...) */  
// 设置串口的文件描述符为异步,man上说,只有 O_APPEND 和 O_NONBLOCK 才能使用F_SETFL
fcntl(fd, F_SETFL, FASYNC);        
tcgetattr(fd,&oldtio); /* save current port settings */  

    /* set new port settings for canonical input processing */  
// 设置新的串口为标准输入模式      
newtio.c_cflag = BAUDRATE &#124; CRTSCTS &#124; CS8 &#124; CLOCAL &#124; CREAD;      
newtio.c_iflag = IGNPAR &#124; ICRNL;    
newtio.c_oflag = 0;      
newtio.c_lflag = ICANON;  
newtio.c_cc[VMIN]=1;    
    newtio.c_cc[VTIME]=0;    
    tcflush(fd, TCIFLUSH);    
tcsetattr(fd,TCSANOW,&newtio);    

/* loop while waiting for input. normally we would do something      
useful here 循环等待输入,通常我们会在这里做些其它的事情 */
while (STOP==FALSE) {      
  printf(".\n");usleep(100000);        
  /* after receiving SIGIO, wait_flag = FALSE, input is availableand can be read */
  // 在收到 SIGIO 信号后,wait_flag = FALSE, 表示有输入进来,可以读取了
  if (wait_flag==FALSE) {        
   res = read(fd,buf,255);    
   buf[res]=0;        
   printf(":%s:%d\n", buf, res);  
   if (res==1) STOP=TRUE; /* stop loop if only a CR was input */    
   wait_flag = TRUE;      /* wait for new input 等待新的输入*/  
       }      
  }      
/* restore old port settings */    
tcsetattr(fd,TCSANOW,&oldtio);  
}            

/***************************************************************************    
* signal handler. sets wait_flag to FALSE, to indicate above loop that    *
* characters have been received.                                          *
***************************************************************************/  

// 信号处理函数,设置 wait_flag 为 FALSE, 以告知上面的循环函数串口收到字符了  
void signal_handler_IO (int status)   {  
printf("received SIGIO signal.\n");    
wait_flag = FALSE;  
}





nslookup查看mx记录:
nslookup -query=mx cntv.cn
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
cntv.cn mail exchanger = 10 mxcom.263xmail.com.
cntv.cn mail exchanger = 5 mxwcom.263xmail.com.

------------------------------------------------------------------------------------
nslookup -query=mx "smtp.staff.cntv.cn"
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
smtp.staff.cntv.cn      canonical name = smtpcom.263xmail.com.

Authoritative answers can be found from:
263xmail.com
        origin = ns.capital-online.com.cn
        mail addr = root.ns.capital-online.com.cn
        serial = 28436
        refresh = 1800
        retry = 300
        expire = 604800
        minimum = 86400
________________________________________________

Linux windows 通用:
nslookup
set q=mx
163.com


windows下:
nslookup -qmx "163.com"

_______________________________________________

nslookup -query=mx "163.com"
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
163.com mail exchanger = 50 163mx00.mxmail.netease.com.
163.com mail exchanger = 10 163mx02.mxmail.netease.com.
163.com mail exchanger = 10 163mx01.mxmail.netease.com.
163.com mail exchanger = 10 163mx03.mxmail.netease.com.

可以看到163.com的MX记录为mx.mail.163.split.netease.com,并且将列出该MX记录对应的IP。
  如果该命令没有返回正确的MX记录或者IP,则有可能是您的网络问题或DNS配置错误造成无法向网易邮箱发信,请先联系您的DNS管理员进行解决。
把2个串口用交叉线连起来,假设两个串口分别为/dev/ttyS0和/dev/ttyS1,则能直接在一个shell执行cat /dev/ttyS0,然后在另外一个shell 执行echo "test." >/dev/ttyS1,如果两个串口都是好的,则执行cat /dev/ttyS0会输出’test."如果不行,则可用cat /proc/interrupts看一下是否产生了中断,也可用setserial查看串口设置。

编者按:2009年是计算机专业考研专业基础课首次实行全国统考,面对今年的改变,想报考计算机专业的考生可能对复习的准备有很多的疑问。为了帮助考生正确的做好准备工作,学赛网研究生院特访问了我国著名的计算机教育专家、湖南师范大学计算机软件与理论/计算机应用技术硕士点专业课试题命题人张友生博士,请张博士对考试大纲进行全面的解析。本文为大纲解析的第四篇:计算机网络知识点分析。

从 2009年起,计算机专业考研实行计算机学科专业基础综合课全国统考,考试内容涵盖数据结构、计算机组成原理、操作系统和计算机网络等学科专业基础课程。试卷内容的结构是:数据结构45分(占30%),计算机组成原理45分(占30%),操作系统35分(占23%),计算机网络25分(占17%)。计算机网络部分分值也占有不小的份额,要求考生以平等的心态去对待。阅读全文
http://linuxdesktop.cn/2007/04/13/use-wine-ies4linux-to-install-ie6.html

suse11.2:

/lib/modules/2.6.31.5-0.1-desktop/kernel/drivers/usb/serial/ch341.ko



哈哈,原来我的mandrake10自动就可以识别这个设备,不用另外的驱动程序,估计2.6的内核都应该没问题:
首先把usb转串口线插上然后用dmesg &#124; grep usb查找如果看到:
“drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic”
就说明设备已被识别,然后往下看
drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303
usb 2-2: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
说明我的usb转串口芯片是PL-2303,对应系统设备是 dev/usb/tts/0,最后只需在minicom配置文件里将端口改成/dev/usb/tts/0就可以使用了:)


在Windows下可以使用超级终端来连接交换机和路由器等工业设备,而且在Windows下使用usb转串口的线也有相应的驱动,但是如何在Linux下使用呢?
  首先要有一个Linux下的终端软件叫minicom如果没有装这个的朋友可以到自己的源中去下载,然后你就要插上你的usb转串口的线,在Linux下Usb转串口的线几乎不需要驱动,你插上以后在你的dev的目录下应该会有一个ttyUSB0的文件,如果有那么恭喜你了,你的这根线现在是可用的了。进入到终端输入su以root用户进行登录,使用minicom必须要用root用户,然后输入minicom -s 进行设置,进入设置界面以后你会看到有几个选项,分别是:
  Filename and Paths, File transfer and protocols, Serial port setup, Modem and dialing, Screen and keyboard, Save setup as df1, Save setup as...... , Exit from minicom
  进入Serial port setup
  将第一项改成 A—Serial Device : /dev/ttyUSB0
  第二项:B—lockfile Location: /var/lock
  第五项:E—Bps/par/Bits :57600(这里要注意,这个值要改成你的连接的设备的波特率,我这里的是57600)
  第七项:F—Hardware Flow Control: yes
  然后退出进入Modem and dialing
  将A—initing string B-Rest string K-Hang-up string 这三项的值去掉。
  然后退出选择 Save as df1,然后选择EXIT FROM MINICOM 到这里的终端已经设置好了。
  接下来你就可以将你的串口线接上设备,然后在终端下输入minicom就可以对设备进行调试了。
从网上查找资料从而得出的,参考资料:

http://www.cnitblog.com/201/archive/2008/01/31/5813.html计算机的串口不能用,怎么与目标板的串口连接呢?


http://www.okeve.com/System/Linux/20071130/31118.htmlLinux系统下使用USB转串口连接工业设备

http://www.oklinux.cn/html/Basic/jyjq/20080317/49447.htmlVMware技巧:在Minicom下启动Linux系统


1、打开Vmware workstation ,单击菜单栏上的VM下的setting,进入virtual machine setting对话框


2、单击add,添加serial port,依此下一步,直到完成为止。


3、连接好开发板,打开linux虚拟机,进入终端输入minicom –s,进入minicom的设置模式。


a) 检查是否存在设备/dev/ttyUSB0,如果没有就建立一个:
         mknod /dev/ttyUSB0 c 188 0
       选择串口:在选择菜单中的“Serial port setup”,按回车,再按“A”以设置 “Serial Device”/dev/ttyUSB0(注意其中的USB是大写),按回车返回。


b)设置波特率:按“E”键进入设置“bps/par/Bits”(波特率)界面,如果按“I”以设置波特率为115200,按回车返回。 (我使用的是2440的板子)

c)数据流控制:按“F”键设置“Hardware Flow Control”为“NO”.


其它为缺省设置,然后按回车到串口设置主菜单,选择“Save setup as df1”,按回车键保存刚才的设置(保存到“/etc/vminirc.df1”),再选择“Exit”退出设置模式,回到minicom操作模式。此时可像Windows下的超级终端一样使用了。



在最后使用时,XP和linux只能有一个终端可以使用,二者不能同时使用!所以在vmware的状态下,要让linux识别串口的存在,需要重新拔插USB串口!
    一个贪官在狱中写给儿子的信
阅读全文
生活就时间仍在 是我们飞逝

人犯错误 大半是该用真情时太过动脑筋 而在该用脑筋时又太感情用事

生活就是让弱者感觉无奈 让强者感觉无聊的游戏

喜欢的人不出现, 出现的人不喜欢 是让弱者感觉无奈 让强者感觉无聊的游戏

回忆未来  20:12:12
生活就是让弱者感觉无奈 让强者感觉无聊的游戏 这句我看不懂后面的。
王官文  20:12:52
太强了所以无聊,没有追求了吧
回忆未来  20:14:12
时间仍在 是我们飞逝 这个如何解释
王官文  20:15:57
经常感叹时间飞逝,其实是我们老得快,时间只不过是一个永恒的概念,不管怎么样,时间就是时间,但是你就不是以前的你
分页: 246/339 第一页 上页 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 下页 最后页 [ 显示模式: 摘要 | 列表 ]