串口MP3文件发送 界面大致已经做好 导入文件->发送文件暂时只需要发送mp3文件 但是不知道具体怎么做 还有协议也没有 想最好能用zmodem协议 但是没有这些资料 望高人解救能说一下串口文件发送原理 的 也给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般来说有两种: 1、用MS的控件MSCOMM 2、用串行通信类Cserial 3、直接用Win32api函数 4、利用端口函数直接操作 1 MSComm控件的属性 CommPort:设置串口号,类型 short :1-comm1 2-comm2. Settings:设置串口通信参数,类型 CString :B波特率,P奇偶性(N无校验,E偶校验,O奇校验),D字节有效位数,S停止位。 PortOpen:设置或返回串口状态,类型 BOOL:TURE打开,FALSE关闭。 InputMode:设置从接收缓冲区读取数据的格式,类型 long: 0-Text 1-Bin。 Input:从接收缓冲区读取数据,类型 VARIANT。 InBufferCount:接收缓冲区中的字节数,类型:short。 InBufferSize:接收缓冲区的大小,类型:short。 Output:向发送缓冲区写入数据,类型:VARIANT。 OutBufferCount:发送缓冲区中的字节数,类型:short。 OutBufferSize:发送缓冲区的大小,类型:short。 InputLen:设置或返回Input读出的字节数,类型:short。 CommEvent:串口事件,类型:short。 程序示例 串口初始化 if (!m_comm.GetPortOpen())m_comm.SetPortOpen(TURE); /*打开串口*/ m_comm.SetSettings("4800,n,8,1"); /*串口参数设置*/ m_comm.SetInputMode(0); /*设置TEXT缓冲区输入方式*/ m_comm.SetRthresHold(1); /*每接收一个字符则激发OnComm()事件*/ 接收数据 m_comm.SetInputLen(1); /*每次读取一个字符 VARINAT V1=m_comm.GetInput(); /*读入字符*/ m_V1=V1.bstrval; 发送字符 m_comm.SetOutput(Colevariant ("Hello"); /*发送 “Hello” */ 2、Cserial 是由MuMega Technologies公司提供的一个免费的VC++类,可方便地实现串行通信。 3、Windows API通信函数方法 这个在msdn里面讲的很清楚标题:Communication Reference 4、利用端口函数直接操作 这种方式主要是采用两个端口函数_inp(), _outp()实现对串口的读写,其中读端口函数的原型为: int _inp(unsigned shot port) 该函数从端口读取一个字节,端口号为0~65535。 写端口的函数原型为: int _outp(unsigned shot port, int databyte) 该函数向指定端口写入一个字节。 不同的计算机串口地址可能不一样,通过向串口的控制及收发寄存器进行读写,可以实现灵活的串口通信功能,由于涉及具体的硬件电路讨论比较复杂 http://expert.csdn.net/Expert/topic/1851/1851932.xml?temp=.9822657 http://expert.csdn.net/Expert/topic/1505/1505867.xml?temp=.2344019 可以。用分层的方法可以简化问题。不管是使用 MSCOMM 控件,还是直接使用 Win32 API ,都是一种读写串行口的方法。它可以用来读写串行口,但读写的内容是由程序员自己确定的。你可以自己定义协议发送文件,也可以使用 zmodem协议 等别人定义好的协议。所以你需要解决 2 个问题:1、如何读写串行口(底层)2、使用什么协议(高层) 明天公司出去玩。。。。。。。。。。。。散个分!!!!!! ping程序,在recvfrom时阻塞了,麻烦大虾们看看 请问如何用ClassWizard创建基于CRegKey的新类啊 IClassFactory2 接口的几个疑问 距离场的快速计算 征集论文题目 十万火急,关于屏幕抓图! 判断鼠标是否在某个控件中的函数是什么? 如何用ATL得到IDE代码编辑界面函数所在的行号 现在2016年如何注册vc2008 express? csocket频繁访问导致出现什么问题 100分 求一vc二次立方插值法函数,有三次立方的多给50分
1、用MS的控件MSCOMM
2、用串行通信类Cserial
3、直接用Win32api函数
4、利用端口函数直接操作
1 MSComm控件的属性
CommPort:设置串口号,类型 short :1-comm1 2-comm2.
Settings:设置串口通信参数,类型 CString :B波特率,P奇偶性(N无校验,E偶校验,O奇校验),D字节有效位数,S停止位。
PortOpen:设置或返回串口状态,类型 BOOL:TURE打开,FALSE关闭。
InputMode:设置从接收缓冲区读取数据的格式,类型 long: 0-Text 1-Bin。
Input:从接收缓冲区读取数据,类型 VARIANT。
InBufferCount:接收缓冲区中的字节数,类型:short。
InBufferSize:接收缓冲区的大小,类型:short。
Output:向发送缓冲区写入数据,类型:VARIANT。
OutBufferCount:发送缓冲区中的字节数,类型:short。
OutBufferSize:发送缓冲区的大小,类型:short。
InputLen:设置或返回Input读出的字节数,类型:short。
CommEvent:串口事件,类型:short。
程序示例
串口初始化
if (!m_comm.GetPortOpen())m_comm.SetPortOpen(TURE); /*打开串口*/
m_comm.SetSettings("4800,n,8,1"); /*串口参数设置*/
m_comm.SetInputMode(0); /*设置TEXT缓冲区输入方式*/
m_comm.SetRthresHold(1); /*每接收一个字符则激发OnComm()事件*/
接收数据
m_comm.SetInputLen(1); /*每次读取一个字符
VARINAT V1=m_comm.GetInput();
/*读入字符*/
m_V1=V1.bstrval;
发送字符
m_comm.SetOutput(Colevariant ("Hello"); /*发送 “Hello” */
2、Cserial 是由MuMega Technologies公司提供的一个免费的VC++类,可方便地实现串行通信。
3、Windows API通信函数方法
这个在msdn里面讲的很清楚标题:Communication Reference
4、利用端口函数直接操作
这种方式主要是采用两个端口函数_inp(), _outp()实现对串口的读写,其中读端口函数的原型为:
int _inp(unsigned shot port)
该函数从端口读取一个字节,端口号为0~65535。
写端口的函数原型为:
int _outp(unsigned shot port, int databyte)
该函数向指定端口写入一个字节。
不同的计算机串口地址可能不一样,通过向串口的控制及收发寄存器进行读写,可以实现灵活的串口通信功能,由于涉及具体的硬件电路讨论比较复杂
http://expert.csdn.net/Expert/topic/1505/1505867.xml?temp=.2344019
可以。用分层的方法可以简化问题。
不管是使用 MSCOMM 控件,还是直接使用 Win32 API ,都是一种读写串行口的方法。它可以用来读写串行口,但读写的内容是由程序员自己确定的。
你可以自己定义协议发送文件,也可以使用 zmodem协议 等别人定义好的协议。
所以你需要解决 2 个问题:1、如何读写串行口(底层)2、使用什么协议(高层)