使用Python和pyGame進行虛擬儀器開發

2021-06-01 12:30:52 字數 3234 閱讀 3117

(說明: 這是我2023年寫在cublog(china unix)上的部落格,現在把它轉到這裡來.) 

偶然發現pygame的高速繪圖效果,於是忽然想做乙個虛擬示波器,以前經常見到基於 visual c++ 的收費的類庫,感覺太複雜了,根本沒想過要自己寫乙個.然而使用python後,一切都變得很簡單了.

當然,目前只用生成的正弦虛擬資料來顯示了,沒有真正加入音效卡line-in資料.

目前還不能用滑鼠來調整波形縮放,只能使用四個鍵 上下[幅度放大/縮小],左右[時間方法/縮小].程式的執行結果如下:

整個程式的**如下:

import pygame,os,sys

from pygame.locals import *

import random,math

zoomt = 1.0

zoomy = 1.0

pulse = 20

amp = 100

def get_input(events): #事件捕捉函式

global zoomt

global zoomy

global pulse

for event in events:

if event.type == quit:

sys.exit(0)

elif event.type == keydown:

if event.key == 275:

if zoomt < 20:

zoomt += 0.1

else:

zoomt = 20

elif event.key == 276:

if zoomt > 0.1:

zoomt -= 0.1

else:

zoomt = 0.1

if event.key == 274:

if zoomy >= 0.0024:

zoomy /= 1.2

else:

zoomy = 0.0024

elif event.key == 273:

if zoomy <= 0.8:

zoomy *= 1.2

else:

zoomy = 1.0

if event.key == 44:

if pulse < 200:

pulse += 1

else:

pulse = 100

elif event.key == 46:

if pulse > 1:

pulse -= 1

else:

pulse = 1

print event.key

def showtext(screen,txt,size,pos): #在介面顯示字元

myfont = pygame.font.sysfont("vera", size)

screen.blit(myfont.render(txt, 1, (255,255,0)), pos)

def putchart(screen,data,backcolor,linecolor,zoom,zoomy,width): #示波器介面生成

for i in range(100): #生成100個點的正弦資料

d[i] = 111.0 * math.sin(2*3.141592*i/25)

count = 0

while 1:

count += 1

if count % pulse == 0:

for i in range(100):

d[i] = 111.0 * math.sin(2*3.141592*(i)/25 + float(count)/20.0)

putchart(screen,d,(255,0,0),(0,0,255),zoomt,zoomy,1)

get_input(pygame.event.get())

fps = clock.get_fps()

#print "fps = ",fps

clock.tick()

s = "%0.2f %0.2f %0.2f %d"%(fps,zoomt,zoomy,pulse)

showtext(screen,s,20,(30,29))

pygame.display.update()

#pygame.time.delay(80)

Python使用Pygame繪製時鐘

前提條件 需要安裝pygame 功能 1.初始化介面顯示乙個時鐘介面 2.根據當前的時間實現時針 分針 秒針的移動 import pygame,sys,random,math from datetime import datetime from pygame.locals import def pr...

python使用pygame建立精靈Sprite

精靈組可以對其中的所有精靈呼叫它們各自的更新方法 s程式設計客棧elf.update 來進行更新,如位置更新 碰撞檢測 衝突檢測等 all sprites.update 精靈組可以對其中的所有精靈呼叫它們各自的draw方法 self.update 來繪製精靈 all sprites.draw scr...

用Python和Pygame寫遊戲 入門

windows7 下安裝pygame 安裝好,可以用下面的方法確認有沒有安裝成功 import pygame print pygame.ver 2.新的hello world coding utf 8 背景 游標 mouse image filename fugu.png import pygame...