找回密码
 马上注册

QQ登录

只需一步,快速开始

楼主: grant7788

记录用手机上Python编程用蓝牙控制NXT的学习过程(并提供相应资料下载)

 火.. [复制链接]
 楼主| 发表于 2011-2-12 01:10:33 | 显示全部楼层
回复 lmd 的帖子

哈哈~ 你是个严谨的人。今天休假一天在家陪女儿,结果陷在Python里了。确实是个不错的东西。看来要玩一阵子了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 10:02:08 | 显示全部楼层

几个Python相关的链接及目前使用的软件

本帖最后由 grant7788 于 2011-2-12 10:09 编辑

我自己试过数种编程语言,从最初的C/C++ (开始时还是DOS下的TC2.0,后来BC3.1),Delphi,到后来windows下的VB (我好象是从VB3.0 / 4.0一路用过来的),以及VC。也试过Borland C++ builder,Java,等等。不过我是懒人一个,小程序还是用VB,复杂的、需要操作底层的,就用VC配合WDM SDK之类的。
开始接触Python时应该也蛮久了,可是一直觉得这门语言更像是脚本,基本归成了解释语言一类了。
最近因为准备手机上编程,看了一下还是Python比较方便一点,就开始学习。
结果一深入接触,立刻被它吸引。怎么说呢,和以往的语言比较起来,我感觉它最大的特点是:
把人脑从复杂的细节中(如内存管理、界面处理等)解放出来,专注于思考问题。
好吧... 那就花点时间学仔细一点吧。

呵呵,以上废话比较多,大家看过一笑就算了。
Python相关的链接:(我目前用的版本是Python 3.1.3,不过有人说Windows下使用2.5.4比较稳定,我目前尚未发现问题,如果有问题再换吧)
http://www.python.org/
Python上的编程扩展,有一个游戏编程Pygame,就算不编程游戏,如果你希望在程序中引入声音等等,也是很方便的。推荐使用(这个要下载与Python版本相对应的版本,我用的是1.91 for Py3.1):
http://www.pygame.org/

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 10:04:38 | 显示全部楼层
本帖最后由 grant7788 于 2011-2-12 10:07 编辑

呵呵,春节刚过,还算有空。估计三月中旬开始要非常忙了。要赶快...
汗个... 怎么觉得这帖子放在这个地方貌似有点不合适,可是又想不出放哪儿合适。
哪位有好的建议告诉我。先谢啦~
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-12 10:43:21 | 显示全部楼层
回复 grant7788 的帖子

请问这个语言的编程出来的软件是否只能用在nokia上?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 13:21:02 | 显示全部楼层
回复 糖伯虎 的帖子

不是的,这是一个跨平台的软件。目前可以支持Windows, Linux/Unix, Mac OS X等系统。Nokia目前用的S60属于Linux的一种。
Android上面目前也有Python支持。
所以,属于那种学一次,跨各种平台的软件。
很好很强大。


如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 14:02:45 | 显示全部楼层

Python 3.x与Python 2.x的较明显区别

许多书藉是关于Python 2.x的,而现在Python的最新版本是3.1.x。在3.1.x上尝试2.x的例子,经常会遇到莫明其妙的错误,因为有些函数的使用方法有区别。
最常见的两个:

1. print语句,在2.x下是不需要括号的,而在3.x下要括号括起来,否则报错。
例:
print "Hello, world!"
在2.x下可以,3.x下出错。
3.x下要写成:
print("Hello, world!")

2. 输入常用的语句,raw_input,在3.x下改成了input。

以后遇到再来补充。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 15:19:38 | 显示全部楼层

2010-2-12: 基本读完了一本入门书

本帖最后由 grant7788 于 2011-2-12 23:28 编辑

这本书比较幽默,浅显。以一个接一个,由浅至深的应用实例,带你学习Python。
涉及的东西不深,适合对Python有一个初步的了解。
涉及到的东西有:
Python的初步接触,基本的语法,if / else, while, 等等;
声音编程,图形界面,
函数,初步的封装。
没有涉及到的东西有很多:
类的实现,只涉及到了极浅,
其余复杂的无一涉及。
多态、虚函数... 全部没有。

总之,适合快速入门,要提高或是达到实用,还要啃Python的文档或是看另一本书。
公司网速太慢,晚上回去有时间的话上传这本书,及配套源码。
嗯,先广告一下,附件下载的费用会很低,
价廉物美,是行走江湖、杀人越货必备精品。


这份PDF共8个附件,仅收2个乐币... 嘿嘿,便宜吧!
Programming_Python.part01.rar (1.91 MB, 下载次数: 49)

Programming_Python.part02.rar (1.91 MB, 下载次数: 35)

Programming_Python.part03.rar (1.91 MB, 下载次数: 31)

Programming_Python.part04.rar (1.91 MB, 下载次数: 31)

Programming_Python.part05.rar (1.91 MB, 下载次数: 31)

Programming_Python.part06.rar (1.91 MB, 下载次数: 32)

Programming_Python.part07.rar (1.91 MB, 下载次数: 37)

Programming_Python.part08.rar (1.22 MB, 下载次数: 33)


如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 16:45:31 | 显示全部楼层

做个exe文件不容易

本帖最后由 grant7788 于 2011-2-12 17:47 编辑

一般情况下,Python的执行是解释型的,就是说,你给它一个.py文件,里面是程序文本,Python一行行地运行。可是这种情况下,如果想把程序发给朋友们分享,就有问题了:你得要求分享程序的朋友的电脑上也得装Python,还得是相应的版本。
这太麻烦了,于是有第三方的软件,把.py文件,编译成exe文件(windows下),或是其它平台下的可执行文件。
最有名的是py2exe,可是貌似只支持到Python 2.5,我前面试了一下,在Python 3.1下有诸多问题... 头都大了,还没搞出来。有人在Python 3.1下用py2exe成功的,麻烦告诉我一声... 感谢。
后来搜了一下,许多人都说在Python 3.0 / 3.1下,py2exe有问题。有些替代方案,我试了一下,cxFreeze可用。
下载在这里:
http://cx-freeze.sourceforge.net/

下载后安装,然后写这样一个脚本,脚本名字我们就叫它setup.py好了。(假设你要编译成exe的程序叫hello.py)
  1. from cx_Freeze import setup, Executable

  2. setup(
  3.         name = "hello",
  4.         version = "0.1",
  5.         description = "the typical 'Hello, world!' script",
  6.         executables = [Executable("hello.py")])
复制代码
然后,执行:
  1. python setup.py build
复制代码
一段代码从屏幕上滚过之后,如果没有出错的话,exe文件就生成好了。
如果出错了,大半会是报错说,找不到cxfreeze。
那么就在环境变量中,增加一个,名字叫PYTHONPATH,加入cxfreeze安装的目录(默认在C:\Python31\Lib\site-packages\cx_Freeze)。这样应该就可以了。


如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-12 22:45:08 | 显示全部楼层
糖伯虎 发表于 2011-2-11 12:33
回复 grant7788 的帖子

塞班现在已经黔驴技穷了,目前就nokia一家在用,其他的厂家都投入到android的怀抱了 ...

你说的对。今晚的新闻联播,Nokia投向Micro$oft了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-13 02:08:28 | 显示全部楼层

用Windows XP下用Python成功通过Bluetooth连接NXT

本帖最后由 grant7788 于 2011-2-13 02:09 编辑

话说读完了一本书之后,开始想试一下。方式应该和VC下一样,仍是通过Bluetooth虚拟出的那个串口进行调用。
Python下调用串口要安装一个pySerial,链接在此:http://pyserial.sourceforge.net/
这个类封装得很方便。不过我实在是对Python不熟(汗,刚学了一天多一点儿的时间,能熟嘛...),走了不少弯路。
几次准备放弃,“今天就到这儿吧,明天再试”。可是终是不甘心...
事实证明,接近绝望的时刻,也同样就是接近成功的时刻。
嘿嘿... 最后俺还是成功了。庆贺一下。
只是读回了电压值。不过没关系,只要这一步调通了,后面的就都好办了。
嗯,先去睡了。白天还有事...

代码如下。
  1. # program to read the status from NXT controller
  2. # need serial pyserial, download from: http://pyserial.sourceforge.net/
  3. # by Grant, 2011-2-12

  4. import sys, time
  5. import serial

  6. try:
  7.     serial = serial.Serial() #(port=’COM7′,baudrate=96000,timeout=3)
  8.     serial.port = "COM8"
  9.     serial.baudrate = 96000
  10.     serial.timeout = 3
  11.     serial.bytesize = 7
  12.     serial.parity = 'O'
  13.     serial.stopbits = 1
  14.     print("Please wait the Bluttooth connection setting up...")
  15.     serial.open()
  16.     if serial.isOpen():
  17.         print("Bluetooth connection ok!")
  18.         serial.write(bytes([0x2, 0x0, 0x0, 0xb]))
  19.         time.sleep(1)
  20.         
  21.         n = serial.inWaiting()
  22.         if n:
  23.             c = serial.read(n)
  24.             # for i in range(n):
  25.             #     print("%x" % c[i])
  26.             batteryvolt = c[n-2] + c[n-1]*256
  27.             print("battery volt = %d mv" % batteryvolt)
  28.         else:
  29.             print("No data back from serial port!")
  30.         serial.close()
  31.     else:
  32.         print("Bluetooth port connect fail!")
  33. except Exception as ex:
  34.     print("Error! \n%s\n" % ex)
  35.     serial.close()
复制代码



如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-13 02:13:13 | 显示全部楼层
本帖最后由 grant7788 于 2011-2-13 02:20 编辑

运行的结果如截图。点击看大图。在我的电脑上,串口的参数一定要严格设定成:
96000波特率 / 7位数据位 / 1位停止 / 偶校验
可是,后两个参数,在VC下和Python下,同样的数字表示的意思居然不完全相同... 让我绕了半天。
battery_cpt.jpg


明天,哦不,今天,会比较忙,估计Python的程序要等一下才有进展了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-13 02:15:52 | 显示全部楼层
那个Parity,奇偶校验,数值为2时,
Python声称是Odd,VC声称是Even... 汗S...
而Stop bit, Python中是1, 2, 1.5,而VC中是0代表1, 1代表2, 2代表1.5。
有人头晕了没?哈哈~
我去睡了。各位晚安。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2011-2-13 02:25:09 | 显示全部楼层
糖伯虎 发表于 2011-2-12 10:43
回复 grant7788 的帖子

请问这个语言的编程出来的软件是否只能用在nokia上?

糖版,问个题外话:
那个一小时发5帖的限制,要到什么级别会取消啊?太绑手绑脚了!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-13 09:59:12 | 显示全部楼层
回复 grant7788 的帖子

我也觉得Android不错,不过python这种解释性语言跨平台特性相当好,所以不管在哪个平台都是有用武之地的
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-2-13 10:56:33 | 显示全部楼层
回复 grant7788 的帖子

限制已经取消,你就放心发帖吧
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-11-21 17:00 , Processed in 0.085116 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表