이런 것이 세기말 징후인가? Y2K, 휴거가 해프닝으로 끝난 마당에 요즘처럼 세기말의 징후, 종말이 느껴지는 건 처음인 것 같습니다. 코로나 사태는 아직도 진행중, 거기에 요즘은 수도물에 깔따구 유충, 산에는 매미 나방, 대벌레 창궐, 세계적으로는 메뚜기떼의 역습. 영화에서나 보던 종말의 시대를 사는 것 같습니다. 코로나 사태를 겪으면서 타노스의 손가락 튕기기가 현실에서 벌어지는 것 같습니다. 타노스가 선지자 내지는 절대자와 같이 느껴집니다. 지구의 가장 큰 위협은 인간이기에 우주의 질서를 바로 잡기 위해서는 인류의 종말이 필요하다는 생각, 혼란과 타락의 세상을 재건하기 위한 노아의 방주처럼, 끝 모르고 치닫는 주택 가격 상승처럼 우리는 맹목적으로 끝을 향해 달려가고 있다는 생각이 듭니다. 

요즘 곤충 전문 유튜버들을 통해 접하게 된 대벌레의 존재, 처음 한두마리 소개할 때는 나뭇가지와 같은 모양때문에 카멜레온 보다 더 확실한 위장술을 지닌 독특한 벌레라고 생각했는데 대벌레가 창궐한 모습을 보니 역겹기까지 했습니다. 따로 사진은 안올리겠지만 검색해보시면 "아~ 저거구나!" 하실 겁니다. 처음 한두마리 볼 때는 해충처럼 보이지 않고 공격성이 없어 순한 벌레라고만 생각했는데 막상 떼지어 서식하는 모습, 입을 갉아 먹는 모습을 보면 놀랍습니다. 저렇게 많아진 개체수가 문제지 벌레 자체는 해충으로 보이진 않았는데 막상 피해 사례를 보니 안타깝습니다. 다다익선은 화투에서만 쓰는 말인 것 같습니다. 대벌레는 평소 깊은 숲속에 가야만 겨우 보일 만큼 위장술이 뛰어나고 개체수가 많지 않아 흔히 볼 수 없는 곤충이지만 시기와 장소에 따라 대발생해 활엽수 잎을 갉아 먹어 삼림 해충으로 간주되기도 한답니다. 특히 올해 이렇게 창궐하는 것은 올 겨울 이상 기온으로 겨울이 춥지 않아 대벌레 알이 생존할 수 있는 생육 환경이 갖춰졌기에 더욱 문제가 된 것 같습니다. 길이가 긴 것은 50Cm도 넘는 개체가 있다니 이건 곤충인지, 동물인지 모르겠습니다.

또한 얼마전 뉴스에서 어느 마을 이장님이 직접 만든 포충기를 이용해 매미 나방을 제거한다는 얘기가 전해졌습니다. 농약 살포를 통한 꿀벌과 같은 무해한 곤충도 보호하면서 해충만 표적 제거하는 좋은 방법이라고 소개가 되었습니다. 한번에 수천마리가 잡힌다고 하니 놀랍습니다. 캠핑장 가면 조명에 달려드는 나방때문에 딸아이가 기겁곤 했는데 저렇게 잘 잡힌다고 하니 캠핑용품으로 포충기 하나 장만하고 싶습니다.

수도물속 유충 사건은 지금 가장 핫한 이슈이기도 하고..

이러한 일련의 사건을 접하면서 샤워기 필터 회사 주가가 떡상하더니, 생수 회사 주식마저 떡상하네요. 삼다수, 농심등. 지난주초까지 가지고 있던 12만원에 샀다가 9만원대에 팔아버린 롯데 칠성도 오늘부터 오르네요. 롯데도 아이시스 만들어 파는 회사였네요. 상상력이 많이 부족합니다. 하~~ 진짜 못해먹겠습니다. 혹시나 해서 방역주 몇개 찾아봤는데. 모니터링 해놔야겠습니다. 우진비앤지, 유유제약, 대한뉴팜, 파루, 필로시스헬스케어등등이 소개되더라구요.

'주식' 카테고리의 다른 글

봉차트 종류와 설명-4  (0) 2020.07.25
고수는 어떤 로그를 남기는가?  (0) 2020.07.22
UWB 관련주-2  (0) 2020.07.16
봉차트 종류와 설명-3  (0) 2020.07.12
좋은 이야기는 왜 지키기가 어려울까요  (0) 2020.07.12

일전에 UWB 관련주로 아비코 전자를 소개하면서 장난으로 담배 한갑 가격이길래 1주 사봤습니다. 3980원인가.. 헐~~ 5600원이 되어버렸네요. 이렇게 될 줄 모르고 4500원에 팔았는데... UWB 때문에 오른 것 같지는 않는데... 기관이 엄청 사들이더라구요. 그나마 6000원 넘게 찍다가 흘러내려왔는데도 5600원... 주식 알다가도 모르겠습니다. 차트도 모르고, 수급도 모르고 그냥 UWB 소개하면서 올렸는데 왜 때문인거죠? 기관이 제 블로그를 모니터링 하나요? 땅을 치고 아까워 하고 있습니다. 얌체공 마냥 어디로 튈 줄 모르겠습니다. 차트 분석이 의미가 있을까요? 무용론에 더욱 힘이 실리네요. 열심히 무용론 파볼랍니다.

 




'주식' 카테고리의 다른 글

고수는 어떤 로그를 남기는가?  (0) 2020.07.22
벌레가 창궐하는 시대  (0) 2020.07.21
봉차트 종류와 설명-3  (0) 2020.07.12
좋은 이야기는 왜 지키기가 어려울까요  (0) 2020.07.12
봉차트 종류와 설명-2  (0) 2020.07.12

PyVisa는 Python을 이용하여 visa를 통한 GPIB, RS232, Ethernet, USB등의 Interface를 독립적으로 Control할 수 있는 Software Package입니다. 엔지니어의 Resource를 뺏어가는 가장 큰 요인 중의 하나는 반복적인 측정 업무입니다. 여러 산업에 걸쳐 그에 맞는 수많은 계측기들이 개발되어 왔으나 이를 컨트롤할 수 있는 표준들이 업체나 장비별로 제각각이어서 각각의 측정 장비마다 automation을 하기 위해서는 해당 장비의 library나 programming 언어를 개별적으로 배워야 했으나 90년대에 이르러 이러한 불편함을 해소하고자 VISA(Virtual Instrument Software Architecture)라는 표준 프로토콜이 제정되므로서 GPIB, VXI, PXI, Serial, Ethernet 그리고 USB interfaces등을 아우르는 여러 측정 Interface에서 통용될 수 있게되어 이러한 불편이 해소되었습니다. VISA를 통해 C, C++, LABVIEW등의 프로그래밍 언어로 측정 프로그램을 구현하여 손쉽게 계측 장비를 컨트롤함으로써 반복적이고 긴 시간을 요구하는 측정 업무를 대신할 수 있게 되었고 Python의 PyVisa로도 이러한 VISA Programming이 가능하게 되었다.


아래의 예제는 network analyzer를 컨트롤 할 수 있게끔 구현한 프로그램이다.


#coding:utf-8

import sys
import time
import pyvisa
from PyQt5.QtWidgets import *
from PyQt5 import uic

UserUI = uic.loadUiType("lossmeasurement.ui")[0]

class NetworklossMain(QMainWindow, UserUI):
rm = pyvisa.ResourceManager()
tester_list = rm.list_resources()

def __init__(self, *args, **kwargs):
super(NetworklossMain, self).__init__(*args, **kwargs)
UserUI.__init__(self)
self.setupUi(self)
self.pushButton.clicked.connect(self.EquipmentCheck)
self.pushButton_2.clicked.connect(self.LossCal)
self.pushButton_3.clicked.connect(self.EquipmentCal)
self.textBrowser.setPlainText('')
self.textBrowser_2.setPlainText('')
self.lineEdit.setText("setting.znx")

def EquipmentCheck(self):
try:
self.inst = self.rm.open_resource("TCPIP0:0.0.0.0::INSTR") # set your ip or gpib adress
s = self.inst.query("*IDN?")
name = s.split(",")[1]
if name = "ZNB8-4PORT":
s = self.inst.query("*OPC?")
if s == "1\n":
self.inst.write("*RST")
self.textBrowser.setPlainText("Reset Complete")
else:
self.textBrowser.setPlainText("Reset Fail")
else:
self.textBrowser.setPlainText("Check your config")
except:
self.textBrowser.setPlainText("Please check your Equipment!")

def LossCal(self):
self.inst = self.rm.open_resource("TCPIP0::0.0.0.0::INSTR")
self.inst.write(":SYSTEM:ERROR:DISPLAY:STATE ON")
self.textBrowser_2.clear()
self.inst.write(":MMEM:LOAD:STAT 1,'{0}'".format(self.lineEdit.text()))
self.inst.write("*WAI")
opc = self.inst.query(":SYSTEM:ERROR?")
time.sleep(1)
if "No error" in opc:
pass
else:
self.inst.query(":SYSTEM:ERROR:ALL?")
self.inst.write(":SYSTEM:ERROR:DISPLAY:STATE OFF")
self.inst.write("*RST")
self.textBrowser.setPlainText("set file is not appropriate. Try it again")
return
self.inst.write(":CALCULATE1:MARKER:AOFF")
i = 1
spara = []
fr = open("RFLOSS FREQ TABLE.txt", 'r', encoding='utf-8')
fr2 = open("compensation.txt", 'r', encoding='utf-8')
comp = fr2.readlines()
for line in fr:
line = line.rstrip('\n')
comp[i - 1] = comp[i - 1].rstrip('\n')
if i % 10 == 0:
self.inst.write(":CALCULATE1:MARKER10 ON")
self.inst.write(":CALCULATE1:MARKER10:X" + line + "MHZ")
s = self.inst.query(":CALCULATE1:MARKER10:Y?").
while s == '0\n' or s == '-999\n':
s = self.inst.query(":CALCULATE1:MARKER10:Y?")
s = float(s) - float(comp[i - 1])
s = round(s, 2)
spara.append(s)
self.inst.write(":CALCULATE1:MARKER:AOFF")
i += 1
else:
com1 = ":CALCULATE1:MARKER{0} ON".format(i % 10)
self.inst.write(com1)
com2 = ":CALCULATE1:MARKER{0}:X ".format(i % 10) + line + "MHZ"
self.inst.write(com2)
time.sleep(0.1)
com3 = ":CALCULATE1:MARKER{0}:Y?".format(i % 10)
s = self.inst.query(com3)
while s == '0\n' or s == '-999\n':
s = self.inst.query(com3)
s = float(s) - float(comp[i - 1])
s = round(s, 2)
spara.append(s)
i += 1
fr.close()

dat = self.inst.query(":SYST:DATE?")
dat = dat.split(',')
dat = dat[0].rstrip('\n') + '_' + dat[1].rstrip('\n') + '_' + dat[2].rstrip('\n')
fw = open("MeasuredPathLoss_TE_01Port_{0}.dec".format(dat), 'a')
dat = self.inst.query(":SYST:DATE?")
dat = dat.split(',')
dat = dat[1].rstrip('\n') + '/' + dat[2].rstrip('\n') + '/' + dat[0].rstrip('\n')
tim = self.inst.query("SYST:TIME?")
tim = tim.split('')
h = int(tim[O]) + 9
tim = str(h) + ':' + tim[1].rstrip('\n') + ':' + tim[2].rstrip('\n')
total_date = dat + '' + tim
prescript = "Please describe your comments"
fw.write(prescript)
frr = open("RFLOSS FREQ TABLE.txt", 'r', encoding = 'utf-8')
freqlines = frr.readlines()
j = 1
for val in spara:
if '\n' in freqlines[j - 1]:
pass
else:
freqlines[j - 1] = freqlines[j - 1] + '\n'
if j < 10:
k = '0' + str(i)
script = "Frequency_" + k + "=" + freqlines[j - 1] + "RFLoss_" + k + "=" + str(val) + '\n'
else:
script = "Frequency_{0}=".format(j) + freqlines[j - 1] + "RFLoss_{0}=".format(j) + str(val) +'\n'
fw.write(script)
j += 1
self.textBrowser.setPlainText('Loss Calibration Completed. Measured~~.dec')
fw.close()

def EquipmentCal(self):
self.inst = self.rm.open_resource("TCPIPO::0.0.0.0::INSTR")
s = self.inst.query(":SYSTem:COMMunicate:RDEVice: AKAL:ADDRess:ALL?")
if s == ''"\n":
self.inst.query(":SYSTEM:ERROR:ALL?")
self.inst.write(":SYSTEM:ERROR:DISPLAY:STATE OFF")
self.inst.write("*RST")
self.textBrowser.setPlainText('Please check your device')
return
else:
pass
s = s.rstrip('\n')
self.inst.write(":SYSTem:COMMunicate:RDEVice: AKAL:ADDRess {0}".format(s))
self.inst.write(":SENS1:CORR:COLL:AUTO:ASSignment:DELete:ALL")
self.inst.write(":SENS1:CORR:COLL:AUTO:CONF FNP Factory")
self.inst.write(":SENSе1:CORRection:COLLect:AUTO:ASSignment1:DEF:TPOR:DEF 1,2")
self.inst.write(":SENSе1:CORRection:COLLect:AUTO:ASSignment1:ACQUire")
time.sleep(10)
self.inst.write(":SENSе1:CORRection:COLLect:AUTO:SAVE")
dat = self.inst.query(":SYST:DATE?")
dat = dat.split(',')
dat = dat[0].rstrip('\n') + '_' + dat[1].rstrip('\n') + '_' + dat[2].rstrip('\n')
self.inst.write(":MMEM:STOR:STAT 1:{0}".format(dat))
m = self.inst.query("*OPC?")
if m == '1\n':
self.textBrowser.setPlainText("mission complete")
else:
self.textBrowser.setPlainText("Please try again")

if __name__ == "_main_":
app = QApplication(sys.argv)
window = NetworklossMain()
window.show()
app.exec_()



+ Recent posts