今天在做GSM模块收发短信中,遇到了一个问题,0X0D和0X0A会自动只收到0X0A,在网上查了下,果真有这个问题。

现在把原因及解决方法写出来:



在我们发送字符0x0d的时候,往往接受端得到的字符是0x0a 这是怎么回事,原因是在串口配置中c_iflag和c_oflag中存在从NL-CR 和CR-NL的映射,也就是说,串口能够把回车和换行看成一个字符,所以,此时我们应该屏蔽掉这些,用options.c_oflag &=~(INLCR|IGNCR|ICRNL|);和options.c_oflag &=~(ONLCR|OCRNL); 进行配置。



还有一个例子:

  struct  termios Opt;
  int  m_fd = open("/dev/ttyAM1", O_RDWR | O_NOCTTY | O_NDELAY);
  if(m_fd==-1) perror("lcd_drawlib: Cannot open ttyAM1! \n" ) ;
  //设置 串口的NL-CR 和CR-NL 的映射
  tcgetattr(m_fd,&Opt);               //首先读取系统默认设置options
  Opt.c_iflag &=~(INLCR|IGNCR|ICRNL);
  Opt.c_oflag &=~(ONLCR|OCRNL);  
  tcflush(m_fd,TCIFLUSH); /* Update the options and do it NOW */    //刷新和立刻写进去
//设置波特率        
  cfsetispeed(&Opt,B9600);
  cfsetospeed(&Opt,B9600);
  tcsetattr(m_fd,TCSANOW,&Opt);
  write(m_fd, "\x0a", 1);
  close(m_fd);


参考资料:http://www.oldlinux.org/oldlinux/viewthread.php?tid=7903,http://www.idcnews.net/html/edu/20070101/285934.html注意:参考中Opt.c_iflag写错,我已进行了修改
<?php
class EchoParam
{
  function EchoValue($a,$b)
  {
    echo "value = ".$a*$b."\n";    
  }

  function EchoValues($a,$b)
  {
    echo "jjjj";
  }
}
class ClsFactory
{
  public static function CreateNoCheckModel($classname)
  {
    return new $classname;
  }
}
class Vmware
{  
  public function doProx($method, $args)  
  {
    $model = ClsFactory::CreateNoCheckModel("EchoParam");
    echo call_user_func_array ( array ($model, $method), $args);
  }
  public function __call($method, $args)
  {  var_dump($method);
    return $this->doProx($method, $args);
  }
}
$a = 1;
$b = 88;
$mwallobj = new Vmware();
$mwallobj->EchoValue($a, $b);
$mwallobj->EchoValues($a, $b);
?>

这个$method 就是调用的函数名,这就给代理前作判断,而可以代理后就调用modle层的方法,正是因为类Vmware没有这个方法名,而modle层有这个方法名,达到了代理认证的目的。

结果:

[root@vm0000055 ~]# php call_user_func_array.php
string(9) "EchoValue"
value = 88
string(10) "EchoValues"
jjjj


==========================================
call_user_func_array函数也可以调用类内部的方法的:
Class ClassA
{
  function bc($b, $c) {
    $bc = $b + $c;
    echo $bc;
  }
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));
//显示 333
?>
注意POST:

$this->para['uid'] = $_POST['uid'];
$this->para['content'] =$_POST['content'];

GET接收:

$this->para['uid'] = $_GET['uid'];
$this->para['content'] =$_GET['content'];

中文问题:

    var url="a.jsp?name=小李";
    url=encodeURI(url);
    url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]
    /********************************************/
    也有人写成var url="a.jsp?name=escape("小李")";
    功能和encodeURI方法类似。
    /********************************************/
    xmlHTTP.setrequestheader("cache-control","no-cache");
    xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");
    xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式
    xmlHTTP.open ("post",url,true);

PHP得做:urldecode()的操作。

用httpfox抓包,用httpwatcher调试js错误。
以下是Ajax POST提交方式提交:
阅读全文

$HTTP["host"] == "xd.sina.com.cn" {
    server.document-root = "/opt/www/pengyou/framework2/"
    accesslog.filename = space_logdir + "xd.sina.com.cn-access.log"
    server.errorlog = space_logdir + "xd.sina.com.cn-error.log"

    url.rewrite-once = (
        "^/?$"                  => "/control/index.php",
        "^/view/(.*)"           => "/view/$1",
        "^/(.*)"                => "/control/$1",
      )        
        

}
PHP开发,个人觉得还是要轻量级去做框架,分为3个层次:data 层  modle层 control 层,而我们在data层里面可能会用到设计模式的单一模式,而在modle层里面可能采用简单工厂模式,而在control层里面有order模式,和代理(proxy层,让框架去自动调用),而这里面往往这些都在一个依赖倒转原则下(也就是会修电脑但你不会修收音机),其实就是一个里氏代换原则,让data modle control彻底的分开,就像电脑插槽一样,随时随地可以替换,而且很容易查到问题 的所在。


工厂类调用方式:

                $smarty = ClsFactory::Create ( "libs::MySmarty" );
                $this->template = 'myrecord.html';



工厂类实现方法:

class ClsFactory
{
        function Create($classname)
        {
                $c = explode("::",$classname);
                if(count($c) == 2)
                {
                        $package = $c[0];
                        $classname = $c[1];
                }

                if(!class_exists($classname))
                {
                        $classpath = SERVER_ROOT."/libs/";
                        //if($package) $classpath .= $package."/";
                        $classfile = $classpath.strtolower($classname).".class.php";
                        if(!file_exists($classfile)) return 0;
                        include($classfile);
                }
                if(!class_exists($classname)) {
                        return 0;
                }
                return new $classname;
        }
}


路径定义:

./stdafx.php:define ( "SERVER_ROOT", dirname ( __FILE__ ) );


全局变量:

function init_www()
{

        $need_include = array (

                        SERVER_ROOT,
                        SERVER_ROOT . DIRECTORY_SEPARATOR . "libs" . DIRECTORY_SEPARATOR,
                        SERVER_ROOT . DIRECTORY_SEPARATOR . "program" . DIRECTORY_SEPARATOR,
                        dirname ( SERVER_ROOT ) . DIRECTORY_SEPARATOR . "libs" . DIRECTORY_SEPARATOR );
        $include_path = explode ( PATH_SEPARATOR, ini_get ( 'include_path' ) );
        foreach ( $need_include as $path )
        {
                if (! in_array ( $path, $include_path ))
                {
                        $include_path [] = $path;
                }
        }
        ini_set ( 'include_path', join ( PATH_SEPARATOR, $include_path ) );
}
init_www ();



背景:在Flash里直接在浏览器关闭时实现上报数据(Get;/Post;),发现有些浏览器不支持,调用Js实现也有这样的一个问题,记录在:
http://jackxiang.com/post/6084/

chrome浏览器支持onbeforeunload事件吗?
Chrome Safari 在调用 document.write、document.open、document.close 方法以及 "javascipt:" 伪协议时,不会触发 onbeforeunload 事件。

http://w3help.org/zh-cn/causes/BX2047


于是我就自己也试了一把这个Js调用Flash,Flash再调用Js的一个过程,记录如下:
这一篇文章是最好的实践方法,尤其是对Js调用Flash里的函数不同浏览器的不同方法:
http://www.imququ.com/post/39.html
再就是在使用FlashDevelop时新建时默认要用ActionScript AS3 Project,默认的AS3才行。

核心:http://www.imququ.com/post/39.html
结果,除了IE之外,其他浏览器都不会工作,会提示找不到hello这个方法。这个问题困扰了我比较久。最后发现:在非IE浏览器里,flash提供的方法是加在embed上的,我们要得到object下的embed对象,调用embed上的方法才会成功!

1)Html代码如下,index.html:



2)Flash的代码如下,Main.as:



阅读全文
多选select 的name必须是一个name_value[],后面有这个中括号,为哈?
如果不是中括号的话,你用httpfox抓下包,
select  1
select  2
select  3

php他会得到一个值,也就是多选最下面的那个值,而在加上中括号后呢,就会出现如下:
select[]  1
select[]  2
select[]  3


select.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>提交多选的静态页</title>
</head>

<body>
<form id="post_form" name="post_form" method="post" action="./select.php">
  <select name="select[]" size="10" multiple="multiple" id="select">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  </select>
  <label> <br />
  <input type="submit" name="button" id="button" value="提交" />
  </label>
</form>
</body>
</html>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP接收多选是一个数组</title>
</head>
select.php
<body>

<?php
print_r($_POST['select']);

?>

</body>
</html>




这样PHP得到:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)



1. 自己技术很强很全面.
作为leader, 不一定要写很多代码, 但是下面人有了问题你要能解决. 这既是项目需要, 也是leader建立威信所必须的. 从lz的描述来看, 自己只参与了数据库相关的开发, 以至于小到搭环境出现问题大到改架构都需要X来处理, 而对于X没处理好的lz似乎很不满

2. 底下有个技术和关系都很过硬的人.
这个不用多说了, 只要这个技术牛人很服你, 你们沟通肯定没问题, 出现技术问题他自然可以帮你顶着. 有技术没关系, 别人没这个义务(如果只有你是leader的话). 没技术, 那啥也不用说了.

3. 团队技术过硬,关系融洽.
技术过硬问题就少, 关系融洽, 有问题就可以内部消化, 基本不会暴露到你跟前.
一、90%的困难你现在想都没有想到,你都不知道那是困难。

    二、团队核心成员有人要提出辞职时,不要挽留,既然提出了,他迟早是要走的。

    三、如果没有价格上的优势与技术上的绝对优势,千万不要进入红海市场,否则你会必输无疑!

    四、做连锁经营业务,一定要做一套傻瓜版的营销手册与管理手册,只有这样,才能实现远距离的管理。  

    五、做成功一个店之后离你大的成功就不远了,所以你首先就是脚踏实地、集中精力地先做出一家,也是要放弃掉连锁的这种,不要在将来如何做连锁方面做太多的梦,先脚踏实地做出第一家。 阅读全文

业务模式

WEB2.0 jackxiang 2009-7-6 17:10
好的业务模式(产品) + 很好的技术 = 大赚钱
好的业务模式(产品) + 能用的技术 = 也赚钱
差的业务模式(产品) + 好的技术 = 赚吆喝(现在的SNS就差不多这样了)
差的业务模式(产品) + 差的技术 = 自己浪费资源
对我过去感兴趣的朋友们,请看十年总结系列文章

---

在经过RUP和XP两种思想的冲撞之后,我发现想要借助一个什么理论来获得工作绩效的提升,基本上是不可能的,
RUP也好,XP也罢,都不是看看书,照猫画虎就可以解决软件开发过程中的问题的。阅读全文
http://www.askwan.com/post/16/
1、安装: pkg_add -rv minicom

2、安装完成后,# rehash,然后运行# minicom 进行配置。配置和使用前最好查询一下minicom的man页,学习一下
它的键盘操作命令。注意,如果在/usr/local/etc/minicom/下没有etc目录,就要新建一个,用于保存配置文件。
3、进入minocom界面后,按Ctrl+A调出命令模式后,再按o命令,进入配置菜单。主要调整两样,一个是串口号,一个是波特率。
我的配置是:串口设置填/dev/cuad0,波特率部份填9600 8N1。
4、配置后,选择“Save setup as...”把它存为cisco。用X命令退出minicom。
5、用串行线连接电脑串口与交换机的控制口(Console)后,用# minicom 进入minicom即可!
纸上得来终觉浅, 绝知此事要躬行,路慢慢其修远兮,吾将上下而求索,究天人之际,通古今之变,成一家之言!
一个人的性格,会成为他今后命运的指针 吗?
从前我太忙,忙着询问别人,反而忽略了最重要的事---回到自己身上找,因一个人的性格,会成为他今后命运的指针,建立自我,追求忘我。

今天日期

$today=date("Y-m-d");


昨天日期  

$yesterday = date("Y-m-d", mktime(0, 0, 0,date("m"),date("d")-1,date("Y")));


本周开始日期(周一至周日算法)

$weekstart = date('Y-m-d',strtotime('last monday'));


   本周结束日期(周一至周日算法)

$weekend = date("Y-m-d", mktime(0, 0, 0,date("m",strtotime($weekstart)),date("d",strtotime($weekstart))+6,date("Y",strtotime($weekstart))));


   上周开始日期(周一至周日算法)

$pre_weekend = date('Y-m-d',strtotime('last sunday'));


   上周结束日期(周一至周日算法)

$pre_weekstart = date("Y-m-d", mktime(0, 0, 0,date("m",strtotime($weekend)),date("d",strtotime($weekend))-6,date("Y",strtotime($weekend))));

#include <stdio.h>
int a()
{       int b;
        int a= 0x1e;
        b = a+1;
        return b;
        printf("%d",b);

}
int main()
{
int dd;
dd  = a();
printf("%d",dd);



}
分页: 245/339 第一页 上页 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 下页 最后页 [ 显示模式: 摘要 | 列表 ]