Мне непонятно, с чем связана моя проблема, так как я считаю, что все настроено правильно, но мое приложение Flash STILL не может установить соединение с «SOCAT» для считывания неподписанных последовательных данных с подключенного Arduino.
Краткое описание проекта:
Приложение Adobe Flash
- Написано в ActionScript 2 (AS2.0)
- У него есть камераобъект в нем, (но это, кажется, работает просто отлично, и не является фокусом здесь)
RPi 3B Rev.2
- Установлен LAMP (Apache, MySQL, PHP и MyPHPAdmin)
Запуск экземпляра SOCAT при загрузке, используя следующую строку:
socat -d -d -d -d -x TCP-LISTEN: 7777, reuseaddr, fork FILE: / dev / ttyUSB0, b9600, raw
Arduino, подключенный к RPi через USB-кабель (т. е. ttyUSB0 перечисляет как)
- Arduino - запускает временный скетч, который отправляет последовательные данные каждую секунду или около того (строка: «данные» отправляются снова и снова)
Я проверил, что ОБА входящие данные Arduino отправляются (через Arduino IDE для проверки самой платы, а также), используя экземпляр PUTTY на RPI для установления соединения и проверки данных, отправляемых по линии ttyUSB0.и также получено через порт 127.0.0.1:7777
Arduino:
SOCAT / RPi:
Когда я открываю одно из этих окон .. Я вижу:
data
data
data
data
Это то, что посылает Arduino.
Итак, на данный момент ..
У меня естьданные отправляются правильно.У меня есть данные, полученные должным образом.(по крайней мере, до уровня SOCAT)
Однако .. Я не могу (на всю жизнь) заставить мое приложение Adobe Flash подключиться к этому экземпляру SOCAT и прочитать эти входящие данные с подключенного через USB Arduino!!!
Я начал читать об этом .. и читал о политике безопасности, которая необходима Flash Player для этого соединения.
Итак, после некоторой работы я наконец-то получил следующеенастроить и работать правильно (по крайней мере, я верю, но если бы все было идеально, я бы не был здесь .. верно?):)
Я установил SSL с самозаверяющим сертификатом.Я (в конце концов) настроил сервер политики безопасности, используя мод Apache (разработанный только для этого сценария)
И когда я запускаю эту строку:
perl -e 'printf "<policy-file-request/>%c",0' | nc 127.0.01 843
Я получаю ссылку на политикувернулся ко мне:
<?xml version='1.0'?>
<!DOCTYPE cross-domain-policy SYSTEM
'http://www.adobe.com/xml/dtds/cross-domain-policy.dtd'>
<cross-domain-policy>
<site-control permitted-cross-domain-policies='all'/>
<allow-access-from domain='*' secure='false'/>
<allow-http-request-headers-from domain='*' headers='*' secure='false'/>
</cross-domain-policy>
Я даже получил свой пользовательский для загрузки (который на самом деле является той же самой конфигурацией, но хотел посмотреть, разрешает ли «главный» файл настраиваемые политики, и это было/ is)
Может быть, ошибка на стороне Flash / AS?Вот как я пытаюсь установить соединение XMLSocket с работающим экземпляром SOCAT:
import flash.system.Security;
Security.allowDomain("*");
Security.allowInsecureDomain("127.0.0.1");
Security.loadPolicyFile("xmlsocket://127.0.0.1:843");
//instantiate instance
var rpi_usb0_Listener = new XMLSocket();
//create listeners:
//on connect
rpi_usb0_Listener.onConnect = function(result){
if(result){
//connected
state_txt.text = "on-connect success";
}else{
//not connected
state_txt.text = "on-connect failed";
}
}
//on close
rpi_usb0_Listener.onClose = function(){
//disconnected
state_txt.text = "connection closed";
}
//on incoming date recieved
rpi_usb0_Listener.onXML = function(data){
//do whatever
incomingData_txt.text += data;
//close
//rpi_usb0_Listener.close();
}
//make connection
if(!rpi_usb0_Listener.connect(null, 7777)){
state_txt.text = "connection true";
}else{
state_txt.text = "connection false";
}
Независимо от того, что я пытался .. Я никогда не могу подключиться.
Я получаю "при подключении«на экране» каждый раз .. (после 15-секундного тайм-аута)
Мне нужна помощь кого-то более знающего в этой области, чем мне кажется, так как я не могу установить соединение, чтобы спасти мою жизнь.
Если есть какая-то дополнительная информация, которую я могу предоставить, пожалуйста, спросите .. Если есть какой-нибудь файл журнала, я должен проверить, чтобы лучше понять, что происходит .. (пожалуйста, дайте мне знать)
Это моя линия / настройка SOCAT?Это не разрешает подключение из моего приложения Flash?