Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin绑定字节[]或NSObject[]_C#_Binding_Xamarin.ios_Xamarin - Fatal编程技术网

C# Xamarin绑定字节[]或NSObject[]

C# Xamarin绑定字节[]或NSObject[],c#,binding,xamarin.ios,xamarin,C#,Binding,Xamarin.ios,Xamarin,我试图从Xamarin中的Objective-C库绑定以下函数 /*! * This function writes data to the device. * * @param writeBuffer Pointer to a byte buffer containing the write data. * @param offset Amount of data that was already written. * @param size Amou

我试图从Xamarin中的Objective-C库绑定以下函数

/*!
 *  This function writes data to the device.
 *
 *  @param writeBuffer Pointer to a byte buffer containing the write data.
 *  @param offset      Amount of data that was already written.
 *  @param size        Amount of data left to write.
 *
 *  @return Amount of data written.
 *
 *  @note Throws PortException on failure.
 */
- (u_int32_t)writePort:(u_int8_t const *)writeBuffer :(u_int32_t)offSet :(u_int32_t)size;
我无法计算writeBuffer的数据类型

    [Export ("writePort:::")]
    Int32 WritePort (Byte[] writeBuffer, int offSet, int size);
我尝试了Byte[](如上所示),但出现以下错误:

/Projects/StarIOBinding/StarIOBinding/obj/Debug/ios/StarIO/SMPort.g.cs(34,34): Error CS1502: The best overloaded method match for `MonoTouch.Foundation.NSArray.FromNSObjects(params MonoTouch.Foundation.NSObject[])' has some invalid arguments (CS1502) (StarIOBinding)
然后我试着:

    [Export ("writePort:::")]
    Int32 WritePort (NSObject[] writeBuffer, int offSet, int size);
然后编译-但是当运行命令时,我没有得到预期的结果。我给它发送一个字节[],封装在一个NSObject中。NSObject是正确的参数吗?我哪里出错了

编辑:使用IntPtr时,我仍然没有得到任何输出。我能确认一下我做得对吗?我的装订:

    [Export ("writePort:::")]
    Int32 WritePort (IntPtr writeBuffer, int offSet, int size);
当我叫它的时候:

    IntPtr test = System.Runtime.InteropServices.Marshal.AllocHGlobal(myByteArray.Length);
    System.Runtime.InteropServices.Marshal.Copy(myByteArray, 0, test, myByteArray.Length);
    SMPort devPort = SMPort.GetPort ("TCP:10.0.1.4", "", 5);
    int count = devPort.WritePort (test, 0, myByteArray.Length);


您需要在绑定中使用
IntPtr
,并使用
marshall
类来回复制字节。

您需要在绑定中使用
IntPtr
,并使用
marshall
类来回复制字节。

您需要在绑定中使用
IntPtr
并使用
marshall
类要来回复制字节。

您需要在绑定中使用
IntPtr
,并使用
Marshal
类来回复制字节。

谢谢您的帮助。我已经更新了我的问题,我现在说的对吗?这是收据打印机的装订。我现在没有收到任何错误,但没有打印收据!:(我猜这一定与我将字节数组发送到打印机的方式有关,但我对Objective-C的理解使我很难理解我的错误所在。写入端口后的“count”变量是什么?14951,与我的字节数组长度相同。这意味着数据被发送到打印机,对吗数据是否有误?您是否将准确的字节内容与Objective-C示例进行了比较?谢谢您的帮助。我已更新了我的问题,现在调用是否正确?这是收据打印机的绑定。我现在没有遇到任何错误,但没有打印收据!:(我猜这一定与我将字节数组发送到打印机的方式有关,但我对Objective-C的理解使我很难理解我的错误所在。写入端口后的“count”变量是什么?14951,与我的字节数组长度相同。这意味着数据被发送到打印机,对吗数据是否有误?您是否将准确的字节内容与Objective-C示例进行了比较?谢谢您的帮助。我已更新了我的问题,现在调用是否正确?这是收据打印机的绑定。我现在没有遇到任何错误,但没有打印收据!:(我猜这一定与我将字节数组发送到打印机的方式有关,但我对Objective-C的理解使我很难理解我的错误所在。写入端口后的“count”变量是什么?14951,与我的字节数组长度相同。这意味着数据被发送到打印机,对吗数据是否有误?您是否将准确的字节内容与Objective-C示例进行了比较?谢谢您的帮助。我已更新了我的问题,现在调用是否正确?这是收据打印机的绑定。我现在没有遇到任何错误,但没有打印收据!:(我猜这一定与我将字节数组发送到打印机的方式有关,但我对Objective-C的理解使我很难理解我的错误所在。写入端口后的“count”变量是什么?14951,与我的字节数组长度相同。这意味着数据被发送到打印机,对吗数据是否错误?您是否将确切的字节内容与Objective-C样本进行了比较?