anchor.diff:  
   			)
   		)
  -	)
  -	cmd_line
  +		(and (not (nil? cmd)) (nil? str)) ;; ʾֻûв
  +		(begin
  +			(assert "only cmd \n")
  +			(cond 
  +				((= (trim cmd ) "AT+PING") ;; ûвͱʾǷڵģǷĳ豸
  +						(setq cmd_line (string "70 69 6e 67"))
  +				)
  +				((= (trim cmd) "AT&ROUTER")
  +					(setq cmd_line (string "e0"))
  +				)
  +				((= cmd "AT&COORDI")
  +					(assert "set to coordi\n")
  +					(setq cmd_line (string "c0"))
  +					(assert cmd_line)
  +				)
  +			)
  +		)
  +	)
   )
   
   (define (parse_atcmd str)
   	(setq ret nil)
  +	
   	(cond 
   		((starts-with str "AT+")
  -			(setq tmplst (parse str "="))
  -			(setq cmd (tmplst 0) )
  -			(if (> (length  tmplst) 1)
  -				(begin
  -					(setq content (tmplst 1))
  -				)
  -			)
  -			(setq ret (make_serial_cmd cmd content) )
  +			(begin
  +				(setq tmplst (parse str "="))
  +				(setq cmd (tmplst 0) )
  +				(setq content nil)
  +				(if (> (length  tmplst) 1)
  +					(begin
  +						(setq content (tmplst 1))
  +					)
  +				)
  +				(setq ret (make_serial_cmd cmd content) )
  +			)
   		)
   		( (starts-with str "AT&")
  -			(setq tmplst (parse str "="))
  -			(setq cmd (tmplst 0))
  -			(if (> (length tmplst)  1)
  -				(begin
  -					(setq content_lst (parse ( tmplst 1 ) ","))
  -				)
  -			)
  -			(setq ret (make_serial_cmd cmd content_lst) )
  +			(begin
  +				(setq tmplst (parse str "="))
  +				(setq cmd (tmplst 0))
  +				
  +				(setq content_lst nil)
  +				(if (> (length tmplst)  1)
  +					(begin
  +						(setq content_lst (parse ( tmplst 1 ) ","))
  +					)
  +				)
  +				(make_serial_cmd (nth 0 tmplst) content_lst)
  +				(setq ret (copy cmd_line))
  +			)
   		)
   	)
   	
  
positive.code: 					
  				)
  					
  				((= (trim cmd) "AT&ROUTER")
  					(setq cmd_line (string "e0"))
  				)
  				((= (trim cmd) "AT&COORDI")
  					(setq cmd_line (string "c0"))
  				)
  				((= (trim cmd) "AT&PAN")
  					(if (and (= (length str) 2) (list? str))
  						(begin
  
negative.code: 	(setq ret nil)
  	
  	(dolist (x (parse str " "))
  		(extend ret (pack "b" (int (char x) 0 16)) );; char ֻܴ xx, x
  	)
  	ret
  )
  
  (define (make_serial_cmd cmd str)
  	(setq cmd_line nil)
  	
  	(if (and (not (nil? cmd)) (not (nil? str)) ) ;; Ҵ˲
  		(begin
  			(cond	
  				((= (trim cmd ) "AT+PING");; AT+PING=XX XX,Ȼpingһ֪˶̵ַ豸ȥû壬Ϊ˼豸Ƿţûл
  					(if (list? str);;
  						(begin
  							(setq t1 (parse (str 0) " "))
  							(if (= (length t1) 2) ;; ϸĸʽΪ xx xx,ֻһո񣬲жĿո
  								(setq cmd_line (string (str 0) " 70 69 6e 67"))
  							)
  						)
  					)
  				)
  				
  