粉末检波器
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了粉末检波器相关的知识,希望对你有一定的参考价值。
粉末检波器
01 粉末检波器
一、粉末检波器
在早期人类无线电应用中, 检测高频无线电波相对比较低效和简单。 其中粉末检波器是在1890年,由法国科学家 Edouard Branly发明,称为 Cohere Detector。 它的基本结构就是在两个考的很近的电极之间分布一些细碎的金属粉末, 整个封装在一个玻璃罐内。
二、操作演示
今天看到Youtube上的视频,UP主展示了它的检波功能,这也是我第一次看到它的运行。 开始的时候,这个粉末检波器两端呈现高阻状态, 当附近有电火花所形成的的高频电流流过分布检测器时,它就会呈现导通状态。 直到再次敲击它,它重新回到高阻状态。
高频电磁波就是使用的家用点火器, 在点火的时候,两个电极之间会产生电火花。 这些电火花会在空间中产生高频电磁波, 进而会触发粉末检波器导通。 粉末检波器导通之后就已知保持低阻状态,指导被敲击回复松散状态。 这就是早期人类发送与接收电磁波的方法。
※ 总 结 ※
本文展示了粉末传感器的基本结构与工作特性。 看到它,你应该是站在了人类无线通讯的起始点了。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# DOPASTE.PY -- by Dr. ZhuoQing 2021-10-07
#
# dopaste <ssss # 【ssss.zip】
# dopaste =ssss # 【ssss】
#
# Note:
#============================================================
from head import *
import urllib.request
from PIL import Image
from io import BytesIO
import win32clipboard
import requests
import zipfile
import cv2
csdn_title = '写文章-CSDN博客'
#------------------------------------------------------------
outdir = r'd:\\temp'
microvideo_dir = r'd:\\Nutdisk\\MicroVideo'
microvideo_mooc = r'd:\\MooC\\MicroVideo'
MAX_LENGTH = 10
picselflag = 0
FILENAME_LENGTH = 128
#------------------------------------------------------------
def data82data(data):
data[data < 0x80] = 0
data[data != 0] = 1
datashape = shape(data)
W = datashape[-1]//8
H = datashape[0]
data = data.reshape(size(data))
bits = array([1,2,4,8,16,32,64,128])
data = data.reshape(-1, 8) * bits
data8 = sum(data.T,0).reshape(H,W)
return data8
#------------------------------------------------------------
def img2databuf(imagefile):
img = cv2.imread(imagefile)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY).astype(uint8)
data = data82data(gray).astype(uint8)
data = data.reshape(size(data)).tobytes()
datalen = int.from_bytes(data[:4], 'little')
filename = data[4:4+FILENAME_LENGTH].decode('gbk').strip('\\x00')
return datalen, filename, data[4+FILENAME_LENGTH:]
def img2datafile(imagefile, datafile):
datalen, filename, data = img2databuf(imagefile)
printff(datalen, filename)
with open(datafile, 'wb') as f:
f.write(data[:datalen])
return filename
#------------------------------------------------------------
def extractGIFimage(giffile, outdir):
try:
im = Image.open(giffile)
except IOError:
printf("Can not load %s ."%infile)
sys.exit()
i = 0
mypalette = im.getpalette()
firstfile = ''
basenameonly = os.path.basename(giffile).split('.')[0]
strid = basenameonly.find('_-')
if strid > 0: basenameonly = basenameonly[:strid]
try:
while True:
im.putpalette(mypalette)
new_im = Image.new("RGB", im.size)
new_im.paste(im)
savefile = os.path.join(outdir, '%s_%d.JPG'%(basenameonly, i))
new_im.save(savefile)
if i == 0: firstfile = savefile
i += 1
im.seek(im.tell() + 1)
except EOFError:
pass # end of sequence
#
im.close()
return firstfile
#------------------------------------------------------------
def str2bsim(s):
if s.find('![N]') >= 0: return 0
if s.find('![n]') >= 0: return 0
if s.find('![O]') >= 0: return 1
if s.find('![o]') >= 0: return 1
if s.find('![L]') >= 0: return 2
if s.find('![l]') >= 0: return 2
if s.find('![S]') >= 0: return 1
if s.find('![s]') >= 0: return 1
if s.find('![A]') >= 0: return 4
if s.find('![a]') >= 0: return 4
if s.find('![F]') >= 0: return 4
if s.find('![f]') >= 0: return 4
if s.find('![R]') >= 0: return 3
if s.find('![r]') >= 0: return 3
if s.find('![P]') >= 0: return 5
if s.find('![p]') >= 0: return 5
if s.find('![Q]') >= 0: return 6
if s.find('![q]') >= 0: return 6
if s.find('![S]') >= 0: return 7
if s.find('![s]') >= 0: return 7
if s.find('![1]') >= 0: return 9
if s.find('![2]') >= 0: return 10
if s.find('![3]') >= 0: return 11
if s.find('![4]') >= 0: return 12
if s.find('![5]') >= 0: return 13
if s.find('![6]') >= 0: return 14
if s.find('![7]') >= 0: return 15
if s.find('![8]') >= 0: return 16
if s.find('![9]') >= 0: return 17
if s.find('![0]') >= 0: return 18
return -1
#------------------------------------------------------------
def extractMPGimage(mpegfile, outdir):
fnonly = os.path.basename(mpegfile).split('.')[0]
cam = cv2.VideoCapture(mpegfile)
printf(mpegfile)
currentframe = 0
while True:
ret, frame = cam.read()
if ret:
filename = '%s_%04d.JPG'%(fnonly, currentframe)
outfile = os.path.join(outdir, filename)
cv2.imwrite(outfile, frame)
currentframe += 1
else:
break
cam.release()
return fnonly
#------------------------------------------------------------
def send_to_clipboard(clip_type, data):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(clip_type, data)
win32clipboard.CloseClipboard()
def image2clipboard(filename):
image = Image.open(filename)
output = BytesIO()
image.convert('RGB').save(output, 'BMP')
data = output.getvalue()[14:]
output.close()
send_to_clipboard(win32clipboard.CF_DIB, data)
#------------------------------------------------------------
def zip2dir(filename, dirs):
dopfile = ''
basedir = ''
bsirfilename = ''
with zipfile.ZipFile(filename, 'r') as f:
for fn in f.infolist():
fns = str(fn).split()[1]
if fns.find('.bsir') >= 0 or fns.find('.BSIR') >= 0:
fnss = fns.split('\\'')
basedir = fnss[1].split('/')[0]
bsirfilename = fnss[1]
dopfile = os.path.join(dirs, fnss[1])
break
f.extractall(dirs)
bsirname = dopfile.replace('/', '\\\\')
newbasedir = ''
for i in range(1000):
newbasedir = '%s%d'%(basedir, i)
newdirs = os.path.join(dirs, newbasedir)
if not os.path.isdir(newdirs):
break
if not os.path.isdir(newdirs):
origindir = os.path.join(dirs, basedir)
os.rename(origindir, newdirs)
dopfile = os.path.join(dirs, bsirfilename.replace(basedir, newbasedir))
bsirname = dopfile.replace('/', '\\\\')
# printf(bsirname)
# exit()
return bsirname
#------------------------------------------------------------
def deleteformular(str):
sdim = str.split('$$')
if len(sdim) < 2: return str
snew = []
for s in sdim:
flag = 0
for a in s:
if ord(a) > 0x100:
flag = 1
break
if flag > 0: snew.append(s)
sdim = (' '.join(snew)).split('$')
snew = []
for s in sdim:
flag = 0
for a in s:
if ord(a) > 0x100:
flag = 1
break
if flag > 0: snew.append(s)
else: snew.append(' ')
sdim = (''.join(snew)).split('<')
snew = []
for s in sdim:
ssid = s.find('>')
if ssid >= 0: snew.append(s[ssid+2:])
else: snew.append(s)
strnew = ''.join(snew)
return strnew
#------------------------------------------------------------
def stringflag(s):
if s.find(' ') >= 0: return 1
if s.find('】】') >= 0: return 1
if s.find('【】') >= 0: return 1
if s.find('#pic_left') >= 0: return 1
if s.find('<span id=【') >= 0: return 1
startid = s.find('![')
endid = s.find('](http')
if startid >= 0 and endid >= 0 and s.find('#pic_') >= 0:
sss = s[startid+2:endid]
if sss.find('▲') >= 0: return 0
if sss.find('图') >= 0: return 0
if sss.find('-') < 0: return 0
return 1
return 0
#------------------------------------------------------------
strall = clipboard.paste().split('\\n')
printf(sys.argv)
if sys.argv[-1] != '*':
tspsendwindowkey(csdn_title, "c", control=1)
csdnall = clipboard.paste()
else:
sys.argv = sys.argv[:-1]
csdnall = clipboard.paste()
if len(sys.argv) > 1:
if sys.argv[1][:1] == '<':
fname = os.path.join(microvideo_mooc, '%s.ZIP'%sys.argv[1][1:])
if os.path.isfile(fname):
csdnall = "【%s.ZIP】"%sys.argv[1][1:]
strall = ""
sys.argv = sys.argv[:1]
elif sys.argv[1][:1] == '=':
fdim = os.listdir(microvideo_mooc)
fname = sys.argv[1][1:]
flen = len(fname)
if flen > 0:
for f in fdim:
if f[:flen] == fname:
csdnall = "【%s】"%fname
strall = ""
break
sys.argv = sys.argv[:1]
#------------------------------------------------------------
if csdnall.count('|') > 3 and csdnall.count('-') < 6 and csdnall.find('M1') >= 0 and csdnall.find('M2') >= 0:
firstline = csdnall
tspsendwindowkey(csdn_title, "%c"%VK_RIGHT, vk=1, noreturn=1)
tspsendwindowkey(csdn_title, " ", noreturn=1)
tspsendwindowkey(csdn_title, "ac", control=1, noreturn=1)
tspsendwindowkey(csdn_title, "c", control以上是关于粉末检波器的主要内容,如果未能解决你的问题,请参考以下文章