vc串口程序可以写,不能读 本帖最后由 VisualEleven 于 2013-10-22 16:23:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你VC里参数是用指针,但C#默认是不能用指针的,这就是个传参数问题,你可以这么试试:1。让C#可以使用指针,好象需要设置不安全就可以用指针,具体C#如何使用指针,你查一下2。VC6里设个保存数据变量,VC6里读出的数据存在这个变量里,C#直接从这个变量里取数据3。C#也可以直接使用MSCOMM32这个控件,我试试没问题,而且效率比C#本身自带的要高得多、要好得多,原先C#里自带的串口控件有问题,效率太低,数据一多就得等会才能收全,而用MSCOMM这个控件就不存在这个问题 vc里面另外写了个方法unsigned char* getXX(){ unsigned char* m_buf; ReadSerial(m_buf, 256); return m_buf;}这样在c#里面就没有传什么参数了,直接调用getXX()我用线程接收数据,但是提示 : 无法封送处理“return value”: 无效的托管/非托管类型组合。 线程是不能调用其它控件或第三方的DLL(并不是所有的DLL),所以你可以查一下如何在C#线程里调用控件,代码也不多,涉及到一个函数Invoke 谢谢回复,现在我不用线程了,就是简单的发一下,收一下。。可是还是提示 无法封送处理“return value”: 无效的托管/非托管类型组合代码就是按钮按下执行:char[] c = "123456".ToCharArray();WriteSerial(c, c.Length);//可以发送,串口助手收到数据后,回发了数据char[] c = getXX();//这里提示错误信息if (c != null && c.Length > 0) Console.WriteLine(new string(c)); unsigned char* getXX(){unsigned char* m_buf;ReadSerial(m_buf, 256);return m_buf;}m_buf没有分配空间,返回这个指针就是野指针。查查串口设置的模式。在vc下面调通了再挪到C#调用。 你返回的是指针,因此还得让C#可以使用指针才行,你查一下C#如何使用指针,然后在C#里定义指针:char* c = getXX();// vc的是要做成dll,C#的调用尽量简单,不能用到指针,就是调用一下getXX()就获取到一个字符串。。那在vc里面怎么改那个getXXunsigned char* m_buf;这个分配空间了也是一样 1。C#里用指针也简单,在工程属性里加改一个地方,改成“非安全”就行了2。VC里还是传指针参数,C#里调用时参数加上ref试试 http://www.cnblogs.com/EdmundDwyane/p/3174308.html 两年前 也用过C# o(∩_∩)o 哈哈~~ 串口助手CommAssisthttp://www.cnblogs.com/EdmundDwyane/p/3443074.html 线程同步问题传入指针 ? ATL工程连接点向导问题 请教:为什么打印出来的两个值是一样的? 急求!!小问题,请也懂delphi的大侠指教!! windows 程序调试 OpenPrinter((char *) pDevMode->dmDeviceName, &hPrinter, &pdp)是什么意思 如何将一个HDC转换成一个CDC 急!!!nokie8210的游戏问题 给分100 切分窗口怎样使右边的部分大小不变??? 本人就快作毕业设计了,想作个vc项目,大家给我点意见吧! 急MFC ADO连接数据库问题 汇编问题
1。
让C#可以使用指针,好象需要设置不安全就可以用指针,具体C#如何使用指针,你查一下
2。
VC6里设个保存数据变量,VC6里读出的数据存在这个变量里,C#直接从这个变量里取数据
3。
C#也可以直接使用MSCOMM32这个控件,我试试没问题,而且效率比C#本身自带的要高得多、要好得多,原先C#里自带的串口控件有问题,效率太低,数据一多就得等会才能收全,而用MSCOMM这个控件就不存在这个问题
unsigned char* getXX()
{
unsigned char* m_buf;
ReadSerial(m_buf, 256);
return m_buf;
}
这样在c#里面就没有传什么参数了,直接调用getXX()
我用线程接收数据,但是提示 : 无法封送处理“return value”: 无效的托管/非托管类型组合。
可是还是提示 无法封送处理“return value”: 无效的托管/非托管类型组合代码就是按钮按下执行:
char[] c = "123456".ToCharArray();
WriteSerial(c, c.Length);//可以发送,串口助手收到数据后,回发了数据
char[] c = getXX();//这里提示错误信息
if (c != null && c.Length > 0)
Console.WriteLine(new string(c));
{
unsigned char* m_buf;
ReadSerial(m_buf, 256);
return m_buf;
}m_buf没有分配空间,返回这个指针就是野指针。查查串口设置的模式。在vc下面调通了再挪到C#调用。
那在vc里面怎么改那个getXX
unsigned char* m_buf;这个分配空间了也是一样
C#里用指针也简单,在工程属性里加改一个地方,改成“非安全”就行了
2。
VC里还是传指针参数,C#里调用时参数加上ref试试
http://www.cnblogs.com/EdmundDwyane/p/3443074.html