Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. import threading
  2. import time
  3. import logging
  4. import Queue
  5. import serial
  6. import time
  7. import string
  8. import pynmea2
  9. import datetime
  10. import base64
  11. import requests
  12.  
  13. logging.basicConfig(level=logging.DEBUG,
  14. format='(%(threadName)-9s) %(message)s',)
  15.  
  16. #BUF_SIZE = 10
  17. q = Queue.Queue()
  18. q.put("location;array")
  19.  
  20. class ProducerThread(threading.Thread):
  21. def __init__(self, group=None, target=None, name=None,
  22. args=(), kwargs=None, verbose=None):
  23. super(ProducerThread,self).__init__()
  24. self.target = target
  25. self.name = name
  26.  
  27. def run(self):
  28. while True:
  29. port="/dev/ttyAMA0"
  30. ser=serial.Serial(port, baudrate=9600, timeout=0.5)
  31. dataout = pynmea2.NMEAStreamReader()
  32. newdata=ser.readline()
  33.  
  34. if newdata[0:6] == "$GPGLL":
  35. newmsg=pynmea2.parse(newdata)
  36. lat=newmsg.latitude
  37. lng=newmsg.longitude
  38. if lat >0 and lng >0:
  39. startDateTimeStr = datetime.datetime.now().strftime("%d_%m_%H_%M_%S")
  40. gpsx = "https://www.latlong.net/c/?lat="+str(lat)+"&long="+str(lng)
  41. print(gpsx)
  42. if not q.full():
  43. if q.get().split(";")[1] != gpsx:
  44. item = startDateTimeStr +";"+ gpsx
  45. q.put(item)
  46. logging.debug('Putting ' + str(item)
  47. + ' : ' + str(q.qsize()) + ' items in queue')
  48. time.sleep(15)
  49. return
  50.  
  51. class ConsumerThread(threading.Thread):
  52. def __init__(self, group=None, target=None, name=None,
  53. args=(), kwargs=None, verbose=None):
  54. super(ConsumerThread,self).__init__()
  55. self.target = target
  56. self.name = name
  57. return
  58. def check_internet(self):
  59. url='http://113.190.40.199:8080/'
  60. timeout=5
  61. try:
  62. _ = requests.get(url, timeout=timeout)
  63. return True
  64. except requests.ConnectionError:
  65. print("you are offline")
  66. return False
  67. def run(self):
  68. while True:
  69. if not q.empty():
  70. item = q.get()
  71. if self.check_internet() == True:
  72. url = 'http://113.190.40.199:8080/index3.php'
  73. params = {
  74. 'ImageName':item.split(";")[0],
  75. 'base64': base64.b64encode(item.split(";")[1].encode()),
  76. }
  77. response=requests.post(url,data=params)
  78.  
  79. else:
  80. continue
  81. time.sleep(5)
  82. return
  83.  
  84. if __name__ == '__main__':
  85.  
  86. p = ProducerThread(name='producer')
  87. c = ConsumerThread(name='consumer')
  88.  
  89. p.start()
  90. time.sleep(5)
  91. c.start()
  92. time.sleep(5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement