diff --git a/src/ros2cs/rosidl_generator_cs/resource/msg.cs.em b/src/ros2cs/rosidl_generator_cs/resource/msg.cs.em index a58d00c7..e01bfa66 100644 --- a/src/ros2cs/rosidl_generator_cs/resource/msg.cs.em +++ b/src/ros2cs/rosidl_generator_cs/resource/msg.cs.em @@ -336,8 +336,11 @@ public class @(message_class) : @(internals_interface), @(parent_interface) int arraySize = 0; IntPtr pArr = native_read_field_@(member.name)(out arraySize, handle); @(get_field_name(member.type, member.name, message_class)) = new @(get_dotnet_type(member.type.value_type))[arraySize]; +@[ if (get_marshal_array_type(member.type)) == 'char']@ + byte[] __@(get_field_name(member.type, member.name, message_class)) = new byte[arraySize]; +@[ else]@ @(get_marshal_array_type(member.type))[] __@(get_field_name(member.type, member.name, message_class)) = new @(get_marshal_array_type(member.type))[arraySize]; - +@[ end if]@ if (arraySize != 0) { int start = 0; @@ -451,4 +454,4 @@ public class @(message_class) : @(internals_interface), @(parent_interface) @#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @[for ns in reversed(message.structure.namespaced_type.namespaces)]@ } // namespace @(ns) -@[end for]@ +@[end for]@ \ No newline at end of file diff --git a/src/ros2cs/rosidl_generator_cs/rosidl_generator_cs/generate_cs_impl.py b/src/ros2cs/rosidl_generator_cs/rosidl_generator_cs/generate_cs_impl.py index 54739267..2e087e32 100644 --- a/src/ros2cs/rosidl_generator_cs/rosidl_generator_cs/generate_cs_impl.py +++ b/src/ros2cs/rosidl_generator_cs/rosidl_generator_cs/generate_cs_impl.py @@ -108,12 +108,12 @@ def get_marshal_type(type_): 'float': 'float', 'double': 'double', 'long double': 'double', - 'char': 'char', - 'wchar': 'short', + 'char': 'byte', + 'wchar': 'char', 'boolean': 'byte', 'octet': 'byte', 'uint8': 'byte', - 'int8': 'char', + 'int8': 'byte', 'uint16': 'short', 'int16': 'short', 'uint32': 'int', @@ -135,8 +135,8 @@ def get_marshal_array_type(type_): 'float' : 'float', 'double' : 'double', 'long double': 'double', - 'char' : 'char', - 'wchar' : 'ushort', + 'char' : 'byte', + 'wchar' : 'char', 'boolean' : 'bool', 'octet' : 'byte', 'uint8' : 'byte',