5

Neden göründüğümü anlamadığım bir hatam var, en garip bazen oluyor ama son zamanlarda her zaman oluyor, kullandığım kod aynı ve hiçbir değişiklik yapmadım. Aslında ben uygulamanın başlangıcında herhangi bir kod yürütme, düğmeler kullanıyorum, bu yüzden bu hata ile bir sebep alamadım lütfen bana yardım edin, hata olduğunu söyleyen bir iletişim kutusu:Flash Builder 4.6 Yerel uzantı Hata

Yerel uzantı Hata: Paketleme var hataları/uyarı. Her bir hedef platform için Flex Build Ambalaj Sayfasındaki her bir yerel uzantıyı kontrol edin. Devam etmek ister misin?

Ve evet programı başlatmak daha dont tıkladığınızda, Debbuger bana çizgiyi gösterir:

[SWF] SerialCOMGame.swf -

ama asla, ben için RS232 kitaplığı kullanıyorum başlamak dekompresyon sonrasında 2121630 bayt

/* 
* NativeSerialComunication.c 
* 
* Created on: Jan 10, 2012 
*  Author: Diego Fernando 
*/ 
#include "NativeSerialComunication.h" 
int comport = 0; 
int baudrate = 57600; 
int buffsize = 4096; 
unsigned char buffer[4096]; 
uint32_t comportOpened = 0; 
FREObject IsSupported(FREContext ctx, void* functionData, uint32_t argc, 
     FREObject argv[]) { 
    FREObject result; 
    uint32_t isSuppoerted = 1; 
    FRENewObjectFromBool(isSuppoerted, &result); 
    return result; 
} 

int startCOMListener() { 
    if (!OpenComport(comport, baudrate)) { 
     comportOpened = 1; 
     return 1; 
    } 
    return 0; 
} 

void stopCOMListener() { 
    CloseComport(comport); 
    comportOpened = 0; 
} 

void COMListener(FREContext ctx) { 
    uint8_t compbytes = 0; 
    while (comportOpened) { 
     compbytes = PollComport(comport, buffer, buffsize); 
     FREDispatchStatusEventAsync(ctx, (const uint8_t *) "listening for data",(const uint8_t *)"datalistening"); 
     if (compbytes) { 
      FREDispatchStatusEventAsync(ctx, (const uint8_t *) buffer, 
        (const uint8_t *) "datareceived"); 
     } 
     Sleep(100); 
    } 
} 
FREObject startSerialListener(FREContext ctx, void* functionData, uint32_t argc, 
     FREObject argv[]) { 
    FREObject result; 
    if (startCOMListener()) { 
     CreateThread((LPSECURITY_ATTRIBUTES) NULL, 0,(LPTHREAD_START_ROUTINE) COMListener, ctx, 0, NULL); 
     FREDispatchStatusEventAsync(ctx, (const uint8_t *) "listener started", 
            (const uint8_t *) "listenerstarted"); 
    } 
    FRENewObjectFromBool(comportOpened, &result); 
    return result; 
} 

FREObject stopSerialListener(FREContext ctx, void* functionData, uint32_t argc, 
     FREObject argv[]) { 
    FREObject result; 
    stopCOMListener(); 
    FRENewObjectFromBool(comportOpened, &result); 
    return result; 
} 

FREObject sendDataToSerialPort(FREContext ctx, void* functionData, 
     uint32_t argc, FREObject argv[]) { 
    FREObject result; 
    uint32_t dataSended = 0; 
    uint32_t dataToSend = 0; 
    FREGetObjectAsUint32(argv[0],&dataToSend); 
    printf("data to be sended %d",dataToSend); 

    if (comportOpened && !SendByte(comport,dataToSend)) { 
     dataSended = 1; 
    } 
    FRENewObjectFromBool(dataSended, &result); 
    return result; 
} 

void MyContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, 
     uint32_t* numFunctionsToSet, const FRENamedFunction** functionsToSet) { 

    *numFunctionsToSet = 4; 

    FRENamedFunction* func = (FRENamedFunction*) malloc(
      sizeof(FRENamedFunction) * 4); 
    func[0].name = (const uint8_t*) "isSupported"; 
    func[0].functionData = 0; 
    func[0].function = &IsSupported; 

    func[1].name = (const uint8_t*) "sendDataToSerialPort"; 
    func[1].functionData = 0; 
    func[1].function = &sendDataToSerialPort; 

    func[2].name = (const uint8_t*) "startSerialListener"; 
    func[2].functionData = 0; 
    func[2].function = &startSerialListener; 

    func[3].name = (const uint8_t*) "stopSerialListener"; 
    func[3].functionData = 0; 
    func[3].function = &stopSerialListener; 

    /*func[1].name = (const uint8_t*) "sayHelloWorld"; 
    func[1].functionData = 0; 
    func[1].function = &sayHelloWorld;*/ 

    *functionsToSet = func; 
} 

void MyContextFinalizer(FREContext ctx) { 
    return; 
} 

void initializer(void** extDataToSet, 
     FREContextInitializer* ctxInitializerToSet, 
     FREContextFinalizer* ctxFinalizerToSet) { 
    extDataToSet = 0; // This example does not use any extension data. 
    *ctxInitializerToSet = &MyContextInitializer; 
    *ctxFinalizerToSet = &MyContextFinalizer; 

} 

void finalizer(void** extDataToSet) { 
    stopCOMListener(); 
    return; 
} 

Ve bu doğal C kodu kullanabilirsiniz benim ActionScript kodu: seri haberleşme, daha önce bu işi gayet iyi bu hatayı alabilirsiniz ama ne olur bilmiyorum, benim C kodu

package com.nativeserialcomunication.driver 
{ 
    import flash.events.EventDispatcher; 
    import flash.events.IEventDispatcher; 
    import flash.events.StatusEvent; 
    import flash.external.ExtensionContext; 

    public class NativeSerialComunication extends EventDispatcher 
    { 
     private var extensionContext:ExtensionContext; 
     private var isSerialListenerStarted:Boolean = false; 
     public function NativeSerialComunication(target:IEventDispatcher=null) 
     { 
      super(target); 
      extensionContext =ExtensionContext.createExtensionContext("com.nativeserialcomunitacion.driver.NativeSerialComunitation",""); 
      extensionContext.addEventListener(StatusEvent.STATUS,statusHandle); 
     } 

     public function init():void{ 
      if(extensionContext.call("startSerialListener") as Boolean){ 
       isSerialListenerStarted = true; 
       trace("serial listener started"); 
      } 
      else{ 
       trace("no serial listener started"); 
      } 
     } 

     public function statusHandle(event:StatusEvent):void{ 
      trace("the event ("+event.level+") received, data:"+event.code); 
     } 

     public function isSupported():Boolean{ 
      return extensionContext.call("isSupported") as Boolean; 
     } 

     public function sendDataToSerialPort(data:uint):Boolean{ 
      return extensionContext.call("sendDataToSerialPort",data) as Boolean; 
     } 
    } 
} 
+0

Bunun görüntüsünün, doğrudan seri iletişim için ArduinoConnector'ı (http://code.google.com/p/as3-arduino-connector/wiki/Introduction) kullanmasını sevdim ama çökme ile ilgili bazı sorunlar var. belirli koşullar. diego, bu doğrudan seri ANE'yi çalıştırdın mı? başkaları için kullanılabilir hale getirebilir misin? Teşekkürler! – ericsoco

cevap

9

Hedef platformlarınız için yerel uzantı paketi onay kutusunun işaretlenmesi gerekebilir.

gezinin için:

Proje Özellikleri - kontrol edilir> Apple iOS (veya Android, vb)

Yerli Uzantıları sekmesini seçin ve emin "Paket" make -> Flex Ambalaj oluşturun.

+0

müthiş arkadaşım, en iyisi, bana çok zaman harcadım: D –

İlgili konular