PasocomMiniとラズパイのテキストファイル送受信






▲PasocomMiniとラズパイ3をつないで、プログラム(テキストファイル)を送信したり、受信できるようにしてみました。
特に名前が無くて、いまのところ「SPI通信プログラム」と呼んでます。

以下がPasocomMini側の通信プログラムです。

'PASOCOM-MINI SPI THUUSHIN PROGRAM BY TAKUYA MATSUBARA
'(MASTER)19PIN MOSI(OUT) --> (SLAVE)37PIN(IN)
'(MASTER)21PIN MISO(IN)  <-- (SLAVE)35PIN(OUT)
'(MASTER)23PIN SCLK(OUT) --> (SLAVE)33PIN(IN)
'(MASTER)24PIN CE0(OUT)  --> (SLAVE)31PIN(IN)
ACLS
DIM BUF%[256]
CLKRATE=4800
TIMING=0
'0:CPOL=0,CPHA=0 : RISING EDGE=SAMPLE,FALLING=RELOAD
'1:CPOL=0,CPHA=1
'2:CPOL=1,CPHA=0
'3:CPOL=1,CPHA=1
SPISTART CLKRATE,TIMING
WHILE 1
 COLOR #RED
 PRINT ""
 PRINT "PASOCOM-MINI SPI THUUSHIN PROGRAM BY TAKUYA MASTUBARA"
 COLOR #WHITE
 INPUT "COMMAND 1:IMPORT/2:EXPORT/3:TEST/4:END>";A
 IF A==1 THEN GOSUB @S2M
 IF A==2 THEN GOSUB @M2S
 IF A==3 THEN GOSUB @TEST
 IF A==4 THEN BREAK
WEND
BUF%[0]=ASC("E")
SPISEND BUF%,1
SPISTOP
END
'----
@TEST
BUF%[0]=ASC("T")
SPISEND BUF%,1
RETURN
'----
@S2M
COLOR #YELLOW
BUF%[0]=ASC("R")
SPISEND BUF%,1
T$=""
EOF=0
WHILE EOF==0
 WAIT 10
 SSIZE=256
 FOR I=0 TO SSIZE-1
  BUF%[I]=0
 NEXT
 SPIRECV BUF%,SSIZE
 FOR I=0 TO SSIZE-1 STEP 2
  C = BUF%[I+0] + (BUF%[I+1] * &H100)
  PRINT CHR$(C);
  T$ = T$+CHR$(C)
 NEXT
 FOR I=0 TO SSIZE-1 STEP 2
  IF (BUF%[I]==0) AND (BUF%[I+1]==0) THEN EOF=1
 NEXT
WEND
PRINT
COLOR #WHITE
INPUT "INPUT SAVE FILE> TXT:";F$
SAVE "TXT:"+F$,T$
RETURN
'-----
@M2S
INPUT "INPUT LOAD FILE> TXT:";F$
BUF%[0]=ASC("W")
SPISEND BUF%,1
WAIT 30
LOAD "TXT:"+F$ OUT T$
COLOR #YELLOW
TOTAL = LEN(T$)*2
PTR=0
WHILE TOTAL>0
 SSIZE = TOTAL
 IF SSIZE>=256 THEN SSIZE=256
 FOR I=0 TO SSIZE-1 STEP 2
  C=ASC(MID$(T$,PTR,1))
  PRINT CHR$(C);
  PTR=PTR+1
  BUF%[I+0] = C AND &HFF
  BUF%[I+1] = (C >> 8) AND &HFF
 NEXT
 SPISEND BUF%,SSIZE
 TOTAL =TOTAL-SSIZE
 WAIT 30
WEND
COLOR #WHITE
RETURN

くわしい説明とラズパイ側のプログラムはこちらで公開中です。
https://sites.google.com/site/yugenkaisyanico/pasocommini