谁会用串口传送文件..C#的

MOTA 2010-04-09 11:22:47
RT

如果有.或知道怎么做..请告诉我..重分酬谢.
...全文
233 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqijun 2010-07-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/wuyazhe/archive/2010/05/27/5627253.aspx
MOTA 2010-04-12
  • 打赏
  • 举报
回复
说实话我很头疼...

谁有DEMO
先给我看一下吧...
搞了好几天都没搞定.
nashina 2010-04-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/nahaitao/archive/2008/05/07/2411564.aspx

这是我整理的一篇关于xmodem_1k协议的文章;
xmodem和xmodem是串口最常用的文件传输协议之一;
你可以参考这个协议定义自己的一套协议
wuzhicheng5 2010-04-09
  • 打赏
  • 举报
回复
你传的什么文件啊?

串口传输数据思路如3楼所说,

代码如1楼哥们所说

问题是你的什么文件,里面是什么数据?方便用byte[] data 发送和接收吗?
nashina 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dragonforfly 的回复:]
使用system.io.serialport建立串口连接,使用二进制方式打开文件,然后按照一定的协议(自己定义的发送接收)发送数据,远端收到后组成新的文件。
大文件需要分片发送。
[/Quote]

用这种方式就行;
如果不想自己定义协议的话,可以参考xmodem_1k协议;
wosizy 2010-04-09
  • 打赏
  • 举报
回复
codeingsky 2010-04-09
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100407/10/b5a1c725-9225-421c-b29a-915e6c3ed252.html
这个也是你的吧?
回复帖子里面答案讲得比较详细了,自己琢磨下吧!

1 system.io.serialport完成串口通讯

2 二进制方式打开文件,然后按字节发送

3 通讯过程中,你得有自己的校验方法

再有什么问题你就盯人直接问吧,串口通讯就这么回事!

Alden 2010-04-09
  • 打赏
  • 举报
回复
使用system.io.serialport建立串口连接,使用二进制方式打开文件,然后按照一定的协议(自己定义的发送接收)发送数据,远端收到后组成新的文件。
大文件需要分片发送。
happyboyxq1985 2010-04-09
  • 打赏
  • 举报
回复
class Serial
{
private SerialPort _com = new SerialPort();//串口对象
public Serial(string strcom,int nbot)
{
OpenPort(strcom, nbot);
_com.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceivedAddress);
}


/// <summary>
/// 打开串口
/// </summary>
/// <param name="strCom">串口名“COM1” </param>
/// <param name="nBot">波特率 </param>
/// <param name="nThreshold">引发消息事件的字节数 </param>
public void OpenPort(string strCom, int nBot)
{
try
{
//串口设置与打开
//_com.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceivedAddress);
_com.PortName = strCom;
_com.BaudRate = nBot;
_com.DataBits = 8;
_com.StopBits = StopBits.One;
_com.Parity = Parity.Even;
_com.Open();
}
catch (Exception ex)
{
//Application.Exit();//退出应用程序
//System.Diagnostics.Process.Start("JT.exe");//启动程序
MessageBox.Show("“" + ex.Message + "”设置硬件功能将不可用,如要使用该功能,请到主窗体的系统设置中选择正确的串口信息,并重新打开该模块!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}


public void DataReceivedAddress(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[_com.BytesToRead];
_com.Read(data, 0, data.Length);
if (data.Length != 0)
{

DisposeRecvDataAddress(data);

}
}
public void DisposeRecvDataAddress(byte[] data)
{
string strReceive = "";
//MessageBox.Show("进来了");
try
{
for (int i = 0; i < data.Length; i++)
{
strReceive += TenToHex(data[i].ToString());
//strReceive += data[i].ToString();
}

}
catch
{
}
}

private string TenToHex(string p)
{
throw new NotImplementedException();
}
}


调用
Serial _com = new Serial("com4", 9600);

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧