Advertisement
iderrington

SolderCore: Fun with LoL shield

Jun 5th, 2013
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 10 'Bit of fun with the SolderCore , LCD/LoL and Share Pries
  2. 20 'by Iain Derrington
  3. 30 '
  4. 40 'INSTALL "LCD-SHIELD"
  5. 50 INSTALL "JIMMIE-RODGERS-LOL-SHIELD"
  6. 60 FONT "ROMAN-DUPLEX"
  7. 70 '
  8. 80 CLS
  9. 90 CLG
  10. 100 '
  11. 110 'List of companies I'm interested in.
  12. 120 'Feel free to add to this list
  13. 130 COMPANIES = ["ARM.L", "GOOG", "AAPL", "MSFT"]
  14. 140 'n = name, l1 = value, x = market, h=day high, g = day low
  15. 150 FLAGS = ["n", "l1", "x", "h", "g"]
  16. 160 '
  17. 170 DIM STOCKINFO(LEN(COMPANIES), LEN(FLAGS))
  18. 180 DIM PREVPRICE(LEN(COMPANIES))
  19. 190 '
  20. 200 REPEAT
  21. 210 CLS
  22. 220 'Open a socket to Yahoo
  23. 230 S = SOCKET("download.finance.yahoo.com", 80)
  24. 240 'Did it open?
  25. 250 IF S < 0 THEN
  26. 260 PRINT $RED; "Failed to open Socker:"; $CYAN; REPORT S
  27. 270 PAUSE 2
  28. 280 ELSE
  29. 290 'Build the request string
  30. 300 REQUEST = "GET /d/quotes.csv?s="
  31. 310 FOR EACH C IN COMPANIES
  32. 320 REQUEST = REQUEST + C + "+"
  33. 330 NEXT C
  34. 340 '
  35. 350 'remove the last "+" from the request string
  36. 360 REQUEST = LEFT(REQUEST, - 1)
  37. 370 '
  38. 380 'Append the rest of the request
  39. 390 REQUEST = REQUEST + "&f=" + JOIN(FLAGS) + " HTTP/1.1"
  40. 400 '
  41. 410 'Send the request through the socket
  42. 420 PRINT #S, REQUEST
  43. 430 PRINT #S, "Host: download.finance.yahoo.com"
  44. 440 PRINT #S, "Accept: text/html"
  45. 450 PRINT #S,
  46. 460 '
  47. 470 HEADER = ""
  48. 480 '
  49. 490 'Read the header info
  50. 500 REPEAT
  51. 510 TRY INPUT #S, INP AS STR
  52. 520 IF NOT ERROR THEN
  53. 530 PRINT; $GREEN; INP
  54. 540 HEADER = HEADER + INP
  55. 550 ENDIF
  56. 560 HDRLEN = HDRLEN + LEN(INP)
  57. 570 UNTIL ERROR OR ELSE INP = ""
  58. 580 '
  59. 590 'Make sure header was OK
  60. 600 IF MATCH("HTTP/1.1 200 OK*", HEADER) < 1 THEN
  61. 610 PRINT $RED; "Error: Incorrect Header Response: "; %GREEN; HEADER
  62. 620 TRY CLOSE S
  63. 630 PAUSE 1
  64. 640 ELSE
  65. 650 TRY INPUT #S, DUNNOWOTTHISIS
  66. 660 IF ERROR THEN
  67. 670 PRINT $RED; "Error reading unknown thing:"; $CYAN; REPORT ERROR
  68. 680 TRY CLOSE S
  69. 690 PAUSE 1
  70. 700 ELSE
  71. 710 'The next lines from the server will contain the
  72. 720 'comma seperted variables
  73. 730 FLGERROR = 0
  74. 740 FOR I = 0 TO LEN(COMPANIES) - 1
  75. 750 TRY INPUT #S, INFO AS STR
  76. 760 IF(NOT ERROR AND(LEN(INFO) > 2)) THEN
  77. 770 STOCKINFO(I) = SPLIT(INFO, ",")
  78. 780 ELSE
  79. 790 'If a single error occurs, latch it
  80. 800 FLGERROR = 1
  81. 810 ENDIF
  82. 820 NEXT I
  83. 830 '
  84. 840 ' Close the socket. It is no longer required
  85. 850 TRY CLOSE S
  86. 860 '
  87. 870 'If all OK display the results
  88. 880 IF FLGERROR = 0 THEN
  89. 890 FOR I = 0 TO LEN(COMPANIES) - 1
  90. 900 ' Remove quotes from string
  91. 910 STOCKINFO(I, 0) = RIGHT(STOCKINFO(I, 0), - 1)
  92. 920 STOCKINFO(I, 0) = LEFT(STOCKINFO(I, 0), - 2)
  93. 930 ' Determine market to select between USD/c and GBP/p
  94. 940 IF MATCH("*Nasdaq*", STOCKINFO(I, 2)) THEN
  95. 950 STOCKINFO(I, 2) = "c"
  96. 960 ELSE
  97. 970 STOCKINFO(I, 2) = "p"
  98. 980 ENDIF
  99. 990 ' Update text on console
  100. 1000 PRINT $GREEN; STOCKINFO(I, 0); $WHITE; " share price accordig to Yahoo is ";
  101. 1010 PRINT $GREEN; STOCKINFO(I, 1); STOCKINFO(I, 2)
  102. 1020 ' Display data on LCD
  103. 1030 'CALL SLIDER(STOCKINFO(I), VAL(STOCKINFO(I, 1)) - PREVPRICE(I))
  104. 1040 CALL LOL_SLIDER(STOCKINFO(I), VAL(STOCKINFO(I, 1)) - PREVPRICE(I))
  105. 1050 ' save the current price
  106. 1060 PREVPRICE(I) = VAL(STOCKINFO(I, 1))
  107. 1070 NEXT I
  108. 1080 ELSE
  109. 1090 PRINT $RED; "Error reading stock info:"; %CYAN; REPORT ERROR
  110. 1100 PAUSE 1
  111. 1110 ENDIF
  112. 1120 ENDIF
  113. 1130 ENDIF
  114. 1140 ENDIF
  115. 1150 UNTIL 0
  116. 1160 END
  117. 1170 '
  118. 1180 DEFPROC SLIDER(SHAREINFO, STATE)
  119. 1190 'Draw a border, the colour indicating good, bad and indifferent
  120. 1200 CASE STATE
  121. 1210 WHEN < 0 'Loss  (
  122. 1220 COLOR %RED
  123. 1230 WHEN > 0
  124. 1240 COLOR %GREEN 'Profit  )
  125. 1250 WHEN 0
  126. 1260 COLOR %BLUE ' Same  |
  127. 1270 ENDCASE
  128. 1280 '
  129. 1290 FILL 0, 0 TO GFX.WIDTH, 30
  130. 1300 FILL 0, GFX.HEIGHT TO GFX.WIDTH, GFX.HEIGHT - 35
  131. 1310 '
  132. 1320 MOVE 20, GFX.HEIGHT - 20
  133. 1330 COLOR %BLACK
  134. 1340 SCALE 1 : DRAW "Day High: " + SHAREINFO(3)
  135. 1350 MOVE 20, 12
  136. 1360 DRAW "Day Low: " + SHAREINFO(4)
  137. 1370 '
  138. 1380 'Scroll the string
  139. 1390 FOR J = GFX.WIDTH / 5 TO - 500 IN 50
  140. 1400 COLOR RGB(1, 1, 1)
  141. 1410 MOVE J, 23
  142. 1420 SCALE 5 : DRAW SHAREINFO(0) + ": " + SHAREINFO(1) + SHAREINFO(2) + "(" + STR(STATE) + ")"
  143. 1430 PAUSE 0.1
  144. 1440 COLOR RGB(0, 0, 0)
  145. 1450 SCALE 1 : FILL 0, 30 TO GFX.WIDTH, 200
  146. 1460 NEXT J
  147. 1470 ENDPROC
  148. 1480 '
  149. 1490 DEFPROC LOL_SLIDER(SHAREINFO, STATE)
  150. 1510 FONT "6x9"
  151. 1520 FOR K = GFX.WIDTH TO - 180 STEP - 1
  152. 1550 CLG
  153. 1560 MOVE K, 8
  154. 1570 COLOR 1 : DRAW SHAREINFO(0) + ": " + SHAREINFO(1) + SHAREINFO(2) + "(" + STR(STATE) + ")"
  155. 1580 PAUSE 0.1 'quite slow as webcam doesn't work very well with LOL shield
  156. 1590 NEXT K
  157. 1610 ENDPROC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement