2010-09-11 14 views
1

Je travaille sur un petit script utilisant les liaisons USB pour ruby. Comme il ne s'agit que d'un wrapper autour de libusb, toutes les fonctionnalités de C++ sont visibles à travers l'abstraction, par exemple quand usb_bulk_read nécessite de donner un buffer en argument (ce qui serait juste un pointeur en C).équivalent ruby ​​d'un tampon c

Comment puis-je créer un tampon de 64 octets de long, pour le bit de code suivant, sans avoir à créer de chaîne avec 64 espaces codés dans le programme (ce que je fais ATM). Je voudrais que Ruby ait des conseils pour ça! Où handle est un objet USB :: DevHandle qui a déjà été ouvert.

Répondre

1

réponse simple qui évite probablement la question fondamentale:

data = ' ' * 64 
+0

Cela fonctionne, merci. Mais si ce n'est que le problème principal, quels sont les autres? –

+1

@Ali Mais vous utilisez toujours une chaîne de 64 espaces, comme si vous les aviez codés en dur dans la source. Néanmoins, c'est probablement la seule façon que vous obtiendrez le même effet dans Ruby. –

+0

Cela est acceptable, car le périphérique est codé pour envoyer des blocs de 64 octets, et de toute façon faire en c aurait les mêmes limitations. –