2010-11-18 16 views

cevap

2

Dokümanlara göre, yalnızca iodata() biçimindeki öğeleri gönderebilirsiniz.

Sürücüye göndermek istediğiniz tek şey tamsayı ve dizgilerse, Erlang belgelerinden this tutorial numaralı terimlerle olduğu gibi kendi terimden şifrelemeyi kullanmak daha verimli (ve çok daha kolay) olabilir. Çağrılarını doğrudan sürücüye gönderilebilecek bir eşleştirmeye dönüştürmek için bir işlev kullanırlar ve bu nedenle term_to_binary() kullanılarak kodlanması gerekmez. X ve Y küçük tamsayı olduğu varsayılır ise

encode({foo, X}) -> [1, X]; 
encode({bar, Y}) -> [2, Y]. 

Bu eşleme mümkündür. Cı tarafında , giriş tamponu ilk baytı bağımsız değişken olarak ikinci bayt kullanılarak uygun işlevi çağırmak için üzerine geçer:

static void example_drv_output(ErlDrvData handle, char *buff, int bufflen) 
{ 
    example_data* d = (example_data*)handle; 
    char fn = buff[0], arg = buff[1], res; 
    if (fn == 1) { 
     res = foo(arg); 
    } else if (fn == 2) { 
     res = bar(arg); 
    } 
    driver_output(d->port, &res, 1); 
} 
+0

Ne yazık ki, şartlar 'ei' kullanılarak daha kolay olduğu kadar karmaşıktır. –

İlgili konular