import RPi.GPIO as GPIO
import struct
import time
from time import sleep
import socket
import sys

HOSTNAME = "192.168.30.111"
PORT = 8600
INTERVAL = 3
RETRYTIMES = 10

global c_socket

def socket_connect(host, port, interval, retries):
global c_socket
c_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

for x in range(retries):
try:
c_socket.connect*1
return c_socket
except socket.error:
print "wait"+str(interval)+"s"
time.sleep(interval)

c_socket.close()
return None

def main():
c_socket = socket_connect(HOSTNAME,PORT,INTERVAL,RETRYTIMES)
while c_socket is None:
c_socket = socket_connect(HOSTNAME,PORT,INTERVAL,RETRYTIMES)

if c_socket is None:
print "system exit:connection error"
sys.exit(0)


# while(1):
# recvdata = c_socket.recv(1024)
# print "ReciveData:"+recvdata
# senddata = raw_input("SendData:")
# c_socket.send(senddata)
# if (recvdata == "quit") or (senddata == "quit"):
# c_socket.close()
# break

if __name__ == '__main__':
main()

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
global _COUNT_PATH
_COUNT_PATH = '/home/shared/count.bin'
global count
count = 0
f = open("/home/shared/tp-1/count.txt","r")
countstr = f.read()
count = int(countstr)
pin = 24
flg = False

#start_time = time.time() - start_time

def write_count(count):
f = open('/home/shared/tp-1/count.txt' ,'w')
f.write(str(count))
f.close()

def callBackRising(channel):
if GPIO.input(24):

global count
count += 1
try:
c_socket.send(str(count))
except:
pass
print(str(count))
write_count(count)
else :
GPIO.output(25,GPIO.LOW)

GPIO.setup(pin, GPIO.IN)
#GPIO.add_event_detect(pin, GPIO.RISING, callback=callBackRising, bouncetime=100)
#GPIO.add_event_detect(pin, GPIO.FALLING, callback=callBackFalling, bouncetime=150)
GPIO.add_event_detect(pin, GPIO.BOTH, callback=callBackRising, bouncetime=200)

DoFlg = True
try:
while DoFlg:
sleep(1)
response = c_socket.recv(1024)
print(response)
if response == 'END':
DoFlg = False
elif response == 'RESET':
count =0
elif response == 'SEND':
c_socket.send(str(count))
finallizeFlg = False;
c_socket.close()
GPIO.cleanup()

except KeyboardInterrupt:
print("end cleanup")
c_socket.close()
GPIO.cleanup()

*1:host, port

rasberry pi 3 で 計数カウンタを作成する5 -python

import RPi.GPIO as GPIO
import struct
import time
from time import sleep
import socket
import sys

HOSTNAME = "192.168.30.111"
PORT = 8600
INTERVAL = 3
RETRYTIMES = 10

global c_socket

def socket_connect(host, port, interval, retries):
global c_socket
c_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

for x in range(retries):
try:
c_socket.connect*1
return c_socket
except socket.error:
print "wait"+str(interval)+"s"
time.sleep(interval)

c_socket.close()
return None

def main():
c_socket = socket_connect(HOSTNAME,PORT,INTERVAL,RETRYTIMES)
while c_socket is None:
c_socket = socket_connect(HOSTNAME,PORT,INTERVAL,RETRYTIMES)

if c_socket is None:
print "system exit:connection error"
sys.exit(0)

if __name__ == '__main__':
main()

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
global _COUNT_PATH
_COUNT_PATH = '/home/shared/count.bin'
global count
count = 0
f = open("/home/shared/tp-1/count.txt","r")
countstr = f.read()
count = int(countstr)
pin = 24
flg = False

def write_count(count):
f = open('/home/shared/tp-1/count.txt' ,'w')
f.write(str(count))
f.close()

def callBackRising(channel):
if GPIO.input(24):
GPIO.output(25,GPIO.HIGH)
global count
count += 1
try:
c_socket.send(str(count))
except:
pass
print(str(count))
write_count(count)
else :
GPIO.output(25,GPIO.LOW)

GPIO.setup(pin, GPIO.IN)
#GPIO.add_event_detect(pin, GPIO.RISING, callback=callBackRising, bouncetime=100)
#GPIO.add_event_detect(pin, GPIO.FALLING, callback=callBackFalling, bouncetime=150)
GPIO.add_event_detect(pin, GPIO.BOTH, callback=callBackRising, bouncetime=200)

DoFlg = True
try:
while DoFlg:
sleep(1)
response = c_socket.recv(1024)
print(response)
if response == 'END':
DoFlg = False
elif response == 'RESET':
count =0
elif response == 'SEND':
c_socket.send(str(count))
finallizeFlg = False;
c_socket.close()
GPIO.cleanup()

except KeyboardInterrupt:
print("end cleanup")
c_socket.close()
GPIO.cleanup()

*1:host, port

Windows10 NTPサーバが動作しない

社内の閉鎖ネットワークにWindows10で動作するNTPサーバがあるのですが、

気づいたら動作していませんでした。

Windows 10 をNTPサーバにする手順 | 無停電電源装置(UPS) | イートン

 

この手順でやり直しましたが、net start w32time

をプロンプトから実行すると

「エラー1058指定されたサービスは無効であるかまたは有効なデバイスが関連付けられていないため開始できません」

 

と出る。・・・・。Windows10のNTPサーバ機能使えなくなったのかな?

と思いましたが、そんなことは検索しても出てこない。

Service のところを探してもw32time はない。

色々試すがダメ。桜時計という、NTPのソフトを使ってみてもダメ。

 

結論

設定の、日付と時刻のところで、時刻を自動的に設定するがオフになっていました。

 オン、にしたらなおりました

良かった。

Yamaha ルーター RTX810を使用した、ネットワーク構築 -0 

拠点1、2、3がVPNで接続されています。

各拠点において、無線LANアクセスポイントを設置するのですが、

今ある拠点間LANのネットワークとは切り離しつつ、

インターネットアクセスが可能な環境を作り上げることになりました。

 

インターネットをブラウジング可能な島からは、ファイルサーバと、他クライアントPCのある島への接続は不可。

ファイルサーバのある島からは、他拠点への接続は可。

webのブラウジングは不可。

しかしwindows update 等の、更新はしっかりと行う必要があるので、

ブラウザをブロックするソフトを使用することにより、

ウェブ閲覧を行う島と、そうでない島を分離して、セキュリティの向上をはかります。

 

その学習とメモを今後更新していく予定です。

 

YAMAHA RTX810 vpnルーターで シリアル通信ができない 

www.amazon.co.jp

 USB変換ケーブルでシリアル通信しようとしたがうまくいかない。

 

www.amazon.co.jp

これも必要。

www.amazon.co.jp

これも必要。

 

しかし、接続できない・・・。

USBではなく、普通のシリアルケーブルでRS232cポートのあるPCでも

なぜか通信できない。

クロスケーブルでいいはず。

 

コンソールはTeraTerm

!!!

カーソルがあって反応しているような気がしたので、

エンター押したらつながっていました。

 

エンター押してみてください!!!

 

 

Orphis X7250 で、スキャナーの保存先に指定したSambaがアクセス不能になりました。

RISO のプリンター複合機 X7250 で、

スキャナーの保存先にしているLinuxServerのフォルダにアクセスできないようで、

「保存できません」とエラーが。

 

そういえばSambaのバージョンが上がってからWindowsServer2003からアクセス不能になったりしたのを思い出しました。

 

X7250にログインして、設定を見てみましたが、

NTLMv2を使用するような項目は見当たらない。

 

とりえず、

サーバー側でNTLMv1へ対応する設定を追加

/etc/samba/smb.confの globalセクションに

ntlm auth = yes

を追加してみると、

ちゃんと保存できました。

 

はたして、X7250側での対応は可能なのでしょうか・・・。

rasberry pi 3 で 計数カウンタを作成する4 -センサー2

5vで動作する光電センサがなかったので、

会社の先輩に5vで動作するマイクロ・フォトセンサを見つけていただきました。

これで別電源を用意する必要がなくなりました。

 

回帰反射型のオムロン製です。

EE-SPZ401-A | オムロン制御機器

 

f:id:hsmtblue:20171003022344j:plain

 

こいつを使って、回路を変更します。

5Vで動作可能なので、Rasberry Pi の5Vの電源を使用し、

入力時には分圧して3.3V 以下に抑えます。

 

f:id:hsmtblue:20171003022819p:plain

これで、入力は3.3V程度に抑えられるはず、

と思って回路作成後に測ってみたら、2V程度まで落ち込んでいました。

が、動作に問題ないのでOK。

あとは、動作を実際にテストしてみます。

これを動作させるプログラムは次回掲載します。