Я не понимаю, в чем причина моей проблемы, поскольку я считаю, что все настроено правильно, но мое приложение Flash ПО-ПРЕЖНЕМУ не может подключиться к «SOCAT» для чтения последовательных данных incomigng с подключенного Arduino.
Резюме проекта:
Приложение Adobe Flash
- Написано на ActionScript 2 (AS2.0)
- В нем есть объект камеры (но, похоже, он работает нормально и не является фокусом здесь)
RPi 3B, ред. 2
- LAMP установлен (также Apache, MySQL, PHP и MyPHPAdmin)
Запуск экземпляра SOCAT при загрузке с помощью этой строки:
socat -d -d -d -d -x TCP-LISTEN:7777,reuseaddr,fork ФАЙЛ:/dev/ttyUSB0,b9600,raw
Arduino подключен к RPi через USB-кабель (то есть: ttyUSB0 обозначается как)
- Arduino — запускает временный скетч, который отправляет последовательные данные каждую секунду или около того (строка: «данные» отправляется снова и снова)
Я проверил, что ОБА входящие данные Arduino отправляются (через Arduino IDE для проверки самой платы, а также) с использованием экземпляра PUTTY на RPI для установления соединения и проверки данных, отправляемых по линии ttyUSB0. а также получено на порт 127.0.0.1:7777)
Ардуино:
СОКАТ/RPi:
Когда я открываю любое из этих окон... я вижу:
данные
данные
данные
данные
Это то, что отправляет 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>
Я даже загрузил свой пользовательский файл (который на самом деле является той же конфигурацией, но хотел посмотреть, разрешает ли «основной» файл пользовательские политики, и это было/есть)
Может быть, проблема во 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?