1.設定 serproxy
2.Arduino配置
將紅色 LED 接在 pin 13,而綠色 LED 則是接在 pin 12
Arduino 程式碼
假設當我們在 Flash 中按下綠色按鈕時會送出「G:1」,放開按鈕時會送出「G:0」;而按下紅色按鈕時會送出「R:1」,放開按鈕時會送出「R:0」。serproxy 經由 socket server 收到後,會將字串送往串列埠。Arduino 中接收串列埠資料的函數有以下幾個:
- Serial.read()
- Serial.readBytes()
- Serial.readBytesUntil()
Flash 送給 socket server 的字串都會以 0x00 來結束,我們利用 Serial.readBytesUntil() 就可以讓它用 0x00 來判斷資料是否讀取完畢了。以下是 Arduino 的程式碼:
#define bufferSize 16
#define greenLedPin 12
#define redLedPin 13
void setup() {
pinMode(greenLedPin, OUTPUT); // declare the greenLedPin as an OUTPUT
pinMode(redLedPin, OUTPUT); // declare the redLedPin as an OUTPUT
Serial.begin(115200);
}
void loop() {
while (Serial.available() > 0) {
char inBuffer[bufferSize];
int stringLength;
stringLength = Serial.readBytesUntil('\0', inBuffer, bufferSize);
if (stringLength > 0) {
inBuffer[stringLength] = '\0';
String inString = String(inBuffer);
Serial.println(inString);
if ( inString == "G:1" ) {
digitalWrite(greenLedPin, HIGH);
} else if ( inString == "G:0" ) {
digitalWrite(greenLedPin, LOW);
} else if ( inString == "R:1" ) {
digitalWrite(redLedPin, HIGH);
} else if ( inString == "R:0" ) {
digitalWrite(redLedPin, LOW);
}
}
}
}
3.Flash
Flash 程式碼
Flash 的部份因為我是用 Flash 8 ,AS2 和新版的語法可能有些許不同。主要是利用 XMLSocket 來和 serproxy 所建立的 socket server 來通訊。使用兩個關鍵影格來完成任務。
影格一:
主要內容說明如下:
影格二:
影格二主要是進行連線,並建立按鈕所要做的動作:
[注意] 由於 Flash 的安全管制,編譯完的 .swf 並無法在本機執行,記得要修改「受信任的位置設定」,將 .swf 的位置加入,不然,啟動 .swf 時只會看到「安全性」警語而無法正常動作。
Flash 的部份因為我是用 Flash 8 ,AS2 和新版的語法可能有些許不同。主要是利用 XMLSocket 來和 serproxy 所建立的 socket server 來通訊。使用兩個關鍵影格來完成任務。
影格一:
if(server == undefined) {
server = '127.0.0.1';
}
if(port == undefined || isNaN(Number(port))) {
port = 5334;
} else {
port = Number(port);
}
isConnected = false;
socket = new XMLSocket()
socket.onConnect = function(success) {
if (success) {
statusTxt.text = "conneted";
isConnected = true;
} else {
statusTxt.text = "connet failed!";
isConnected = false;
}
}
socket.onData = function(src) {
statusTxt.text = "data : " + src;
}
socket.onClose = function() {
statusTxt.text = "disconneted";
isConnected = false;
}
主要內容說明如下:
- socket.onConnect:設定連線成功(失敗)時要進行的動作。
- socket.onData:設定資料接收完成要進行的動作。
- socket.onClose:設定斷線後要進行的動作。
影格二:
stop();
infoTxt.text = "Server:" + server + " Port:" + port;
socket.connect(server, port);
greenButton.onPress = function() {
if( isConnected ) {
socket.send("G:1");
};
}
greenButton.onRelease = function() {
if( isConnected ) {
socket.send("G:0");
};
}
redButton.onPress = function() {
if( isConnected ) {
socket.send("R:1");
};
}
redButton.onRelease = function() {
if( isConnected ) {
socket.send("R:0");
};
}
影格二主要是進行連線,並建立按鈕所要做的動作:
- socket.connect(server, port):依指定的 IP 及 port (設定影格一)和 socket server 連線。
- greenButton.onPress、greenButton.onRelease:設定綠色按鈕按下、放開時要進行的動作。
- redButton.onPress、redButton.onRelease:設定紅色按鈕按下、放開時要進行的動作。
[注意] 由於 Flash 的安全管制,編譯完的 .swf 並無法在本機執行,記得要修改「受信任的位置設定」,將 .swf 的位置加入,不然,啟動 .swf 時只會看到「安全性」警語而無法正常動作。
以上是利用Flash Actionscript 2.0所完成
沒有留言:
張貼留言