Python 板


LINE

※ 引述《captdavince (走自己的路)》之铭言: : 各位好 : 此文文长含程式码 : 小弟我是新手,因为目前实验上的需求急於生出一个可以收data做数据处理的GUI : 所以就使用PyQT跟matplotlib, numpy, scipy来做 : 我自认自己逻辑、coding什麽都不好,需要的功能多少借网路上的一些范例兜起来了 : 描述一下我的实验系统 : 我是用Mightex 的线性CCD module TCN1034-U,原厂有附SDK(dll)..但是我不知道要怎 : 麽使用DLL..但是它另外也可以有USB protocol去做data的传输 : 因为看到Github上国外有人已经把它的USB protocol写好一个script来call.. : 所以这个方式我权衡一下是对我比较简单的..只是目前看起来只能在linux上才顺利的 : 抓到这个CCD : http://www.mightexsystems.com/images/File/ccd_line_camera_software_package.zip : 这个是原厂的程式 : 包含一个稍完整的控制程式,但是不够我的实验使用 : 另外SDK中有各式的dll与examples和SDK的说明文件 : https://github.com/bgamari/mightex-line-ccd : 这个是国外的先进在Github上面写好的script,camera.py : 我先描述一下我的问题. : 是利用一个read_frame()去读取CCD的data(会是3648的1D array) : 後面再做後续的 : 目前的read_frame()是如下 : def read_frame(self): : try: frame = self.ccd.get_frame() #self.ccd是前面initialize过的camera.py : except: return None : if frame is not None: : return frame.image - np.mean(frame.dark) : else: : return None 这个read_frame函式 的回传值 可以是 None 或是 "有用的值" 但是下面的函式在使用时 并没有做判断 : 这个部份的live数据的读取会是 (我是用一个100ms的counter,到时後就call下面) : def updateposition(self): : self.ccd.set_exposure_time(self.ui.ExpSlide.value()) #把快门设成使用者所要的 : self.data = self.read_frame() #读取data : x = np.arange(len(self.data)) #取得data长度 读取後就直接用了?? 是None怎麽辨?? : self.currentview.plot(x, self.data) #用matplotlib widget plot出来 : self.currentcanvas.draw() : 不过後面还有单次读取data的时候用的也是类似的方式 : 设快门後,用read_frame()读data : 我利用print(frame)的方式来看读取得顺不顺利 : 目前看起来是使用者的快门设超过300ms之後就可能会拿到None.. 另外还有一个问题是 这个None是从哪来的?? 是从try来 还是後面的if判断式?? 虽然结果不影响 但是无法判定程式出错的地方在哪里 观念上还蛮可怕的 : read_frame()不会等到取得ccd的data就会先feed None : 在後面需要单次读取data的时候就会造成 : File "project.py", line 206, in acqpos : a = np.arange(len(self.posframe)) : TypeError: object of type 'NoneType' has no len() : 的错误 这是因为你每100ms 就去抓一次frame 可是exposure time (似乎是指多久会产生一张frame??) 在大於100ms时 理论上是抓不到frame的(还没产生 (当然还要加上一点其它程式码运行的时间) : 这个部份是我真的一点头绪都没有不知道该怎麽解决的部份 : 希望各位先进可以帮帮我是不是有简单的fix,像是改写read_frame()里try的判断 : 式内容,还是难道要连原本国外的那个script里都需要改写呢? 原则上你可以更改counter的更新时间 跟exposure time相同即可 不过我看了一下github的if __name__ == __main_:底下的程式码 while True: time.sleep(1e-2) count = c.get_buffered_frames_count() if count == 0: continue c._prepare_frames(1) frame = c._read_frames(1) print frame.timestamp, frame.dark 似乎有 get_buffered_frames_count() 这个方法去看frame产生了没 你也可以直接看看ccd的get_frame 它是怎麽实作的 也有用到get_buffered_frames_count哦~ : 是不是应该要写得让他会等CCD的方式,因为CCD的exposure是0.1ms~6500ms : 我会希望可以取得6500ms的data 能是最好 不过用while ccd.get_frame()也不为过 不过因为你是用ui while ccd.get_frame 在 exposure time 较大时 可能造成你ui画面的freeze哦~(像当机一样) 但先别急 把问题一个一个解决吧 : 因为後面的function有部份是希望依使用者设定取得x次特定快门时间的data把它加起来 : (这个部份我还有点问题就是用 : for i in range(1, step+1): : self.ccd.set_exposure_time(self.ui.ExpSpin.value()) : self.postframe = self.read_frame() : self.accum += self.posframe : 其实在这个step>100的时候很容易当掉..改用while loop会比较不容易当掉吗? 可否说明何为当掉?? (是加到None吗??) 另外 你的x是指step吗?? (在程式里很怕看到不知从何而来的变数) 改用while loop 会不会比较不容易当掉 这个你应该可以自己先试试的说 :) 小建议 set_exposure_time 如果没有即时随ui里的值变动的话 可以不用放进for里 以减少程式的负担 : 感谢各位看完这麽长的内容 : 希望我有把我的问题描述清楚 : 谢谢各位大德 加油 本人不是很懂ccd 有什麽误解还是方向错误 还请一拼指正 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.35.245







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP