说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用Visual Basic实现无线通讯

HTML文档下载 WORD文档下载 PDF文档下载
利用Visual Basic实现无线通讯
中科院空间中心 姜棣昭

  一、概述
  Visual Basic 是Mcrosoft公司推出的强有力的系列开发软件之一,而且以其实用、方便、快捷、开发周期短、广泛而强大的功能越来越被广大编程人员所亲赖,广为流传,似乎有些专业的编程人员放弃了Visaul C++ 而改用了Visaul Basic之类的RAD编程工具,尽管Visaul C++在灵活性、代码紧凑、运行速度快及底层开发等方面Visaul Basic无法比拟的,但编写C++应用程序过长的调试和开发周期确实有点不适应当今的应用程序开发环境。
  在Visaul Basic开发工具中提供了大量的控件(或称控制、组件)供编程人员使用,可以方便的利用这些组件中的属性、方法、语言等以事件驱动方式开发应用程序,还可以利用WINDOWS SDK中的API中的应用程序接口等工具开发应用程序。VB还自带一个控件开发软件包CDK,利用CDK可以开发自己需要的Controls 。在通讯问题中我们可以使用VB提供的通讯控件或调用WINDOWS API通讯函数。

  二、 VB串行通讯
  利用VB开发通信程序主要的方法有两种,一是利用VB本身提供的控件(CONTRALS),另一种方法是利用WINDOWS API应用程序接口,WINDOWS API 主要提供了三个动态连接库KERNEL.EXE、USER.EXE、GDI.EXE供开发人员调用,其中KERNEL.EXE 主要包括一些底层操作函数,完成一些资源管理、任务、内存等操作,USER.EXE包含了一些与WINDOWS管理有关的函数,如通讯、菜单、消息、光标、插入符、计时器以及绝大多数非显示函数,GDI.EXE图形设备接口库,主要内容为与设备输出有关的函数。和串口通讯有关系的函数BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、GetCommError、GetCommState、WriteComm、ReadComm、SetCommState、CloseComm等均在 \Windows\system 子目录下的USER.EXE动态连接库中,在VB调用之前应该先在全局变量定义处声明API通讯函数、定义常量。
  在我们的实践中,用VB 控件实现通讯的方法比调用SDK的API动态连接库的方法更加方便、快捷,而且用较少的代码可以实现相同的功能,这就是用VB 控件实现通讯的优点所在,下面主要介绍一下利用VB 控件实现无线通讯的问题。
  在VB的控件工具箱中,提供了一个使用非常方便的串行通讯控件MSComm,它全面的提供了使用RS-232串行通讯上层开发的所有细则,它既可以使用查询方式又可以使用事件驱动方式来完成串行通讯。
  在MSCOMM控件中提供了一系列的编程要素,这些编程要素有属性、事件和函数,利用这些要素编程,可以实现几乎全部的串行通讯功能。在VB中提供了30多个属性、一个事件和两个函数,其中主要的属性为CommPort、Settings、PortOpen、InBufferSize、OutBufferSize、InBufferCount、OutBufferCount、Break、InputLen、SThreshold、Rthreshold、RTSEnable、CommEvent、ParityReplace、NullDiscard等。
  控件MSComm提供了一个事件OnComm,该事件可以截取串口的任何消息,转入事件处理程序。WINDOWS操作系统的运行机制为事件驱动,在VB编程中事件驱动方式同样是软件运行的主要方式之一,当没有事件发生时程序可能处于某一循环、等待或任务状态当事件发生时,程序转入事件处理程序。每个控件下都有一些事件供程序员使用,MSCOMM控件中OnComm事件是唯一的,OnComm可以扑获通讯时发生的串口事件和错误信息,当有串口事件或错误发生时,VB会立刻触发一个OnComm事件,程序就会自动转入OnComm事件处理程序中。CommEvent属性是OnComm事件的指示器,该属性在设计时不能使用,在程序运行时为只读,CommEvent 属性存有最近的事件或错误的数值代码,可以在程序中随时读取CommEvent 属性值来了解通讯的状况,OnComm事件是和CommEvent属性密切相关、一起使用,当任何一个OnComm 事件或错误发生时,都会使得CommEvent属性值改变,在OnComm事件处理过程中,可以通过判断CommEvent属性值,对于不同的属性值转入不同的事件处理过程,一般采用的办法是SELECT CASE…….END SELECT。由于在无线通讯中没有使用有线MODEM,CommEvent 属性涉及到的有线MODEM的属性数值代码和本项目无关。

  三、 无线传输接口和协议
  在我们的项目中用Intel 586/120的PC机为上位机,通讯程序使用VB开发的,用8031单片机做CPU、 AD574作数据采集的下位机,上位机作数据接收和数据处理中心站,下位机实时采集数据之后,进行简单的数据平均计算,当收到上位机发来的发送指令之后,开始向上位机发送数据。
  上位机无线通讯接口使用的是一块插在ISA扩展槽中的无线MODEM ZX-02,无线MODEM与KENWOOD公司的TK-378无线对讲机相连,数字信号通过无线MODEM调制成为音频信号之后,送到TK-378无线对讲机上的MIC口。
  下位机有一台外置无线MODEM ZX-01,单片机的数字信号经过串口送入无线MODEM,MODEM对信号进行调制后送入KENWOOD TK-378无线对讲机上,接收数据的方式与上述相同,由TK-378收到信号后,经无线MODEM将音频信号解调为数字信号进入计算机或单片机处理。
  由于在我们的通讯网络中,并非点对点的通讯,而是一点对多点的广播式的通讯方式,因此,我们在通讯协议中曾加站点识别码,每个站有自己特定的识别码,给下位机编码可以保证网络通讯的有序性。
  由于无线通讯可能会有空间的燥声干扰,因此,我们采取了多项抗干扰措施,首先是包头识别码,在发送了传输命令之后,下位机开始以打包的形式传输数据,每一包都有一个包头和包尾识别码,假如识别码有误,这一次的传输为不正常数据处理。打包发送另外一个原因是TK-270对讲机连续发送数据的时间不能超过一分钟,超过一分钟就会自动中断发送,因此,当数据较多时不打包连续发送的时间就会超过一分钟,发送数据中断。
  在下位机中有32KB的NVRAM,可以保存32KB的数据该数据可以由上位机发送清除命令的方法清楚掉,当32KB满了以后,最早放入的数据就会丢掉,由于我们的采样速率不高,在慢采的情况下,两天的时间才能存满,这样不论上位机或下位机出现断电、死机等问题,数据不会丢失掉。
  在发送过程中,由于干扰的原因数据传输出现错误,上位机不给下位机发送清楚命令,数据保存在NVRAM中,下次上位机发送传输命令之后,这些数据还会重新发送到上位机来,这样可以避免了线路带来的数据损失,
从下位机向上位机传送的代码有ASCII码和BCD码,测量数据部分用的是BCD码主要是为了节省资源,由上位机向下位机发送的命令均为ASCII码。
  我们还对字段长度和包的长度作了规定,一个字段有多少个字节,一包有多少个字段组成,如果数据最后不够一整包,也按照整字段的格式作为半包发送过来。
  考虑到下位机的分散性,可能固定在偏远、不宜接近的地带,用上位机对下位机发送校时命令并校时的方法来统一网络时间。
  由于我们使用的无线MODEM 所限,传输速率只能达到2400BPS,而在我们的使用中1200BPS、N PARITY、8 DATA、1 STOP为较稳定状态。
  上位机向下位机发送的命令有校时命令并校时、请内存命令、发送数据命令、快采命令和慢采命令等。发送命令有两种发送方式,即手动方式和自动方式,自动方式是由定时器来完成的。
  在无线通讯过程中,除了规定合理的协议之外,为了保证通讯的正确性,在数据发送时适当的增加延时是必要的,当速度较慢的计算机向速度较快的计算机发送数据时应适当的增加延时。

  四、 应用实例
  由于该项目的软件源代码较长,我们只拿出和串口通讯有关的程序片段来供大家参考。在我们的工作中实践了三种通讯方式,即查询方式、事件驱动方式、事件驱动转查询方式,这三种方式各有利敝,查询方式有方便可靠的特点,可利用协议或设定时钟进入和退出查询状态,但不是资源的有效利用方式,事件触发方式对于定长通讯非常有效,但定长通讯在有些场合不实用,事件驱动转查询方式既有事件驱动的特点又有转查询方式特点,可以说是集二者之长,有效利用资源。下面着重介绍事件驱动转查询方式。
  首先在公共模块中定义和ONCOMM有关的参数:
.
.
.
Global Const MSCOMM_EV_RECEIVE = 2'收到 Rthreshold 个字符。该事件将持续产生直到用 Input 属性从接收缓冲区中删除数据。
Global Const MSCOMM_ER_RXOVER = 1008'接受缓冲区溢出。接收缓冲区没有空间。
Global Const MSCOMM_ER_TXFULL = 1010 '传输缓冲区已满。传输字符时传输缓冲区已满

  在启动过程中对串口和输入输出缓冲区初始化:
Sub Form_Load ()
 .
 .
 .
 comm1.Settings = "1200,n,8,1" '设定波特率1200bps,无校验,8位数据位,1位停止位
 comm1.CommPort = 1 '串口1
 comm1.InputLen = 1 '一次从输入缓冲区中读取一个字符
 comm1.InBufferSize = 512 '定义输入缓冲区为512字节(bytes)
 comm1.InBufferCount = 0 '清空输入缓冲区
 comm1.OutBufferCount = 0 '清空输出缓冲区
 comm1.PortOpen = True '启动串口
End Sub
  下面是发送数传命令的子过程,启动该过程由一个定时器控制:
Sub sample_data ()
 .
 .
 .
 comm1.RTSEnable = True '将Modem的PTT置高,同时打开对讲机
 Call time_delay '适当延时
 comm1.Output = "*TRNS" + Chr$(13) '发送命令
 Do '该循环用来检测命令是否全部发送完毕
 Loop Until comm1.OutBufferCount = 0
 Call time_delay '适当延时
 comm1.RTSEnable = False '将Modem的PTT置低,将对讲机改为接受状态
 comm1.InBufferCount = 0 '清空接收缓冲区
 comm1.RThreshold = 1 '设定RThreshold = 1,等待出发OnComm事件
 .
 .
 .
End Sub
  在OnComm编写接收和处理代码:
Sub Comm1_OnComm ()
 Select Case comm1.CommEvent
  .
  .
  .
  Case MSCOMM_ER_RXOVER '接收缓冲区溢出。可插入相应的代码
  Case MSCOMM_ER_TXFULL '传输缓冲区已满。可插入处理代码
  Case MSCOMM_ER_RECEIVE '收到1个字符,可进入以下处理过程
   comm1.RThreshold = 0 '不再响应OnComm事件,转入查寻方式接收
   ii = 0
   iii = 0: sinn = Chr$(42): sinn1 = Chr$(42) '初始化变量
   Do
    duration = Timer + .2 '设定超时退出的时间值
    iii = iii + 1
    sinn1 = sinn
    Do '该循环判断输入缓冲区是否有数据或是否超时
     'dummy% = DoEvents()
    Loop Until comm1.InBufferCount >= 1 Or Timer >= duration
    If Timer >= duration Then
     iii = iii - 1
     overtime = True '确定超时退出,并非正常退出
     Exit Do
    End If
    sinn = comm1.Input '正常退出,取值付给sinn
    If header_er = 0 Then
     GoTo test_header
    End If
    If Asc(sinn) > 175 Or Asc(sinn) < 160 Then '判断包头是否正确
     iii = 0
     GoTo station_number_er '包头不正确,丢掉该数据
    End If
test_header: header_er = 0 '包头正确,接受到包头,header_er=0
    ssin(iii) = sinn'----put date into string dimantion
    station_number = Asc(ssin(1))
    package_number = Asc(ssin(2))
    sentence_number = Asc(ssin(3))
    last_character = Asc(ssin(iii))
station_number_er:
   Loop Until sinn1 = Chr$(10) and sinn = Chr$(13) '当收到正确的包尾0A,0D后退出
   If overtime = True Then '如果超时非正常退出
    overtime = False
    comm1.RThreshold = 1 '重新启动OnComm事件,等待接收下一包
    timer6_wait.Enabled = True
    GoTo endsub
   End If
  以下是接收数据正确以后的数据处理程序,包括解码和计算这里从略。
   .
   .
   .
   If package_number = 1 Then '如果接收数据正确,而且是最后一包
    timer2_sample.Enabled = True '启动控制数传命令定时器
    comm1.RTSEnable = True '置PTT为高
    comm1.OutBufferCount = 0 '清空输出缓冲区
    Call time_delay '适当延时
    comm1.Output = "*MACK" + Chr$(13) '发送清内存命令
    Do '检测是否发送完毕
    Loop Until comm1.OutBufferCount = 0
    Call time_delay '适当延时
    comm1.RTSEnable = False '置PTT为低
   End If
   If package_number > 1 Then '如果不是最后一包
    comm1.RThreshold = 1 '启动OnComm准备接收下一包
    timer6_wait.Enabled = True
   End If
endsub: header_er = 1: comm1.InBufferCount = 0 '--empty inbuffer protect from bed data on the inbuffer
 End Select
End Sub

  五、 结论
  根据我们实践工作的经验,在本项目中无线通讯和有线通讯的主要区别在于用MSCOMM控件的RTSEnable属性对无线Modem的PTT操作以及适当的延时,延时的长短和使用的计算机有关。在开发的过程中,把握好上述两条,设定一个合理的通信协议,选择合适的硬件是至关重要的。
微软启动“Companion Web”计划 可互连多屏幕设备 让你望而却步的密码管理服务已获得100万美元的种子基金 SDCC 2013开始公开征集讲师和演讲主题 不用图片和JS,照样创建绚丽的动态CSS3菜单 是福还是祸?开发者饱经风雨的内心独白 设计师/开发者看过来,七月35款新工具速递! Hadoop进军机器学习:Cloudera收购Myrrix共创“Big Learning” 张民杰:三人团队的OpenStack机会 White Elephant:开发者必备的Hadoop利器 不及分析师预期:微软第四季财报揭晓 净利49.7亿美元 Facebook收购英国手机代码验证公司Monoidics Apache基金会废弃其C++标准库 鲍尔默宣称微软有一百万台服务器,这个数字真的靠谱吗? 全球6000开发者:iOS、Android、WP最痴情谁? 提升网站知名度的十大方法 IBM移动平台首席架构师Greg Truty:MobileFirst从底层架构开始 Hallo.js:一款所见即所得的Web编辑器 数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径 移动周报:百度收购91,19亿美金背后的博弈 植物大战僵尸2:“免费+内付费”模式引发争论 [CTO俱乐部第103期] 高德和四维图新技术高管谈地图导航的发展与挑战 Java 7爆最新漏洞,10年前的攻击手法仍有效 Twitter联合创始人Biz Stone谈Facebook用户体验 提倡零广告 英雄会:企业的人才漏斗 开发者的武林大会 一次错误估算带来的启示 苹果开发者中心被黑:开发者信息或被窃取 SIM卡加密存漏洞 将影响数亿计的手机用户 搜狗茹立云:探索引擎产品落地 浏览器+搜索模式会成主流吗? 大势所趋,IBM Acme Air至少使用Netflix的5个开源工具 【观察】跨越“朦胧期”的云计算:产业、核心技术、生态圈以及突破点 Rovio Account:平台化之路修成正果 vb中能不能再过程中定义全局的数组 当在TREEVIEW里CLICK某项时,想让LISTVIEW里的相应ITEM变成SELECTED(变为兰色选中)。 windows2000 professional 怎么屏蔽CTR+ALT+DEL 或任务管理器 成都的java程序员,请大家联系起来! 师傅出门了,还望哪位大侠能够指点一二..300分酬谢谢//小新的徒弟敬. 怎样创建一个弹出式子窗口在显示时父窗口同时为激活状态(标题栏为蓝色)? 急!请问如何在java的GUI界面上,点击一按钮,来运行一批处理文件?? 一个小问题!(不好意思问!) Dim cReg As New cRegistry 该引用哪个库(库的全名) 学习遇到的难题 特殊按钮 我想开发一个三层结构的进销存软件问题? 怦怦运气,看看有没有人知道,近来看看 请问有那个网站有关于ORACLE的入门书籍下载. 非常不错的delphi网站 我有一个问题想问问大家!!!有分送哟。 高价收购! 谁可以给我TSR完整的例程...(要有注释喔) 现在用的控件都是D版的,以后怎么注册软件啊? 请过了网络设计师的兄弟帮帮忙! 在C中,找一个字符或字符串在另外一个长字符串(64K)最后出现的位置,怎么实现最高效呢? 用 DHCP 分配了二个网段的IP地址。 “斑竹”在吗?象是只有你能够解决了!!!(附程序及错误代码!!!) 请问哪位仁兄知道SYGATE4.2 build 803的注册码? 如何在表单中阻止双引号??? 大虾们,帮我看看,这个错误和警告是什么原因造成的? 帮帮我吧 关于B/S报表? 怎样设置msflexgrid某一列的颜色? 用 DHCP 分配了二个网段的IP。 怎么能抓到密码? 在运行时想改变一个label的字体怎么改变,有没有做过的,label的属性在设计时是可以改的 fatal error C1010 找一个和VB的属性区一样的代码,控件或类库均可 如何调用在不同的窗体里自定义的过程 一个技术探讨问题,我想知道象在WORD等软件中插入图形或图象后,还能把它选择,并移动是怎样实现的? 请问:在另一个.asp文件中如何调用相同的变量? WEB初级应用问题 DIALOGBAR问题 请想报考明年的网络设计师的朋友进来聊聊 Oracle面向对象特征讨论,请进! 我学会VISUAL C++ 到底要多少时间 线程调试问题 大家一起进来讨论oracle和sql server的日志哦 请指教如果设置服务器端COM组件的权限,使终端可以访问到?分数好说啦,急,高手快帮忙! 如何把程序嵌入到widows Expolore 中? 今天心情特好!散分 在vc下怎样调出window下的“打开方式”对话框,他是类还是控件!请高手指点! 一个门外汉的问题~~~~ 谁知道windows共享密码如何算的 vc中asm怎么不執行? 某服装公司用公式C=10+12n计算成本费.C表示成本费,n表示做一件服装所需的时间.试根据公式填写下来n(时) 2 3.5 4.2C(元) () () () 一件衣服原价200元,如果按八折出售,这件衣服现价多少元? 数列{an}中,a1=3,且对于任意大于1的正整数n,点(根号an,根号an+1),n+1是下标.在直线x-y-根号3=0上则an=?答案是3(n-2)^2.我在百度里还看到了其他的这种题,但是都是an-1.我不知道差别在哪里.顺 服装成本如何计算?哪位大虾知道... 数的整除题在37的后面补上两个数字,它就能被3、5、7整除.这个四位数是多少?顺便问一下,能被7整除的数有何特征? 一件打衣服打八折销售现在比原来便宜40元这件衣服原价多少元 如何计算服装的成本? 一件衣服打8折出售,现价是原价的百分之几? 数列(an) 满足a1=3,对任意大于1的正整数n,点(根号下an, 根号下an--1)在 直线x--y--根号3=0,求an(详 有关自然数质数的.有自然数1,2,3,4……,去掉其中三个数,剩下的数的平均数是19又9分之8,已知去掉的数有两个质数,问这两个质数的最大的和是多少?(最好有解题过程), 一件衣服打八折销售的价格是80元,那么原价是 一件衣服若打八折之后便宜了 自然数C是最小的质数,且a,C的和也是质数,数字a最小是多少? 好评 过程 一件衣服打8折出售,就是这件衣服按原价的80%好评 过程 一件衣服打8折出售,就是这件衣服按原价的80%出售,现价比原价降低了( )%多少出售. 在数列{an}中,a1=1,且对任意的大于1的正整数n,点(根号an,根号an-1)在直线y=x-2n+1上(1)求数列{an}的通项公式(2)若b1+b2+……+bn=an,求数列{bn}的通项公式 若x的平方+x-2=0,则x的三次方+2x的平方-x+2007= 已知X的平方+2X-1=0,则2X的立方+5X的平方-2008=? 若数列{an}的前n项和Sn,a1=2,且对任意大于1的整数n,点(根号下Sn,根号下Sn-1)在直线x-y-根号2=0上,则数列{an }的通项公式为?-------------(根号下Sn,根号下Sn-1):Sn-1是 S的下标 若x的平方+x-1=0,则x的立方+2x的平方+2008=? 所有偶数(0除外)的最大公因数是( ),所有奇数的最大公因数是( ). 判断题:把0.043缩小到原来的10分之一,再扩大到原数的1O0O倍后是4.3 100块的东西,我要达到30%的利润,要卖多少钱,求公式,谢谢! 所有的偶数(0除外)最大的公因数是( ),所有奇数的最大公因数是( ). 二.判断题.1.一个数(0除外)乘一二.判断题. 1.一个数(0除外)乘一个真分数,所得的积小于这个数. () 百分之30去掉百分号后,原数就缩小100倍.这句话对吗? 所以非零的自然数的公因数是();所以偶数(0除外)的最大公因数是();所有奇数的最大公因数是().直接告诉每个方框的答案, 判断题:把一个数(0除外)的小数点向右移动一位,所得的数比原来增加了10倍.这道题参考答案上说是错误的,请问错在哪里?请举例, 服装店有一套衣服,第一件按原价出售,没人来买,第二天大八五折,仍没人来买;第三天再降价200元,终于售出.已知售出的价格恰好是原价的60%,问原价是多少? 一套衣服打八折出售,比原价少卖了120元,卖了多少元要有算式,不要二元一次方程 一个偶数和一个奇数它的最大公因数是1 请问“一个数,如果只有1和它本身两个因数,这样的数叫质数”一句中的只有1和它本身两个因数是什么意思还有还有 “一个数,如果除了1和它本身还有别的因数,这样的数叫做合数.”除了1和它 一套衣服打八折出售后,比原价少卖了120元,求原价 一道关于利润的应用题 最好用方程解某店原来将一批水果按百分之百的利润定价销售,由于定价过高,无人购买,不得不按百分之三十八的利润重新定价,售出了其中的百分之四十;害怕水果变 把1.5%扩大100倍后是() 把85%的百分号去掉,结果() A不变 B 缩小到原来的100分之1 C 150一本书看了40%,表示()占()的40%一件毛衣中,羊毛占91.3%,羊绒8.7%,91.3%表示()占总含量的91 写一个奇数和偶数,使它们的最大公因数是1写出一个素数和合数,是它们的最大公因数是1写出两个偶数,是它们最大的公因数是其中较小的数写出两个偶数,是它们的最大公因数是其中较小的数 列方程解浓度、利润应用题这五道题都是关于浓度、利润的应用题,一定要用一元一次方程解答啊!1.10千克盐水溶液中的96%是水分,蒸发一段时间后,盐水中的95%是水分,那么蒸发了多少千克水?2. 两个偶数的和或差一定是奇数.判断题、是对是错? 在38的后面添加百分号,结果()A不变 B扩大100倍 C缩小100倍 一件衣服打4折,现价160元.这件衣服降了多少元?求算式 列方程并求出解.一件衣服现价182元,降价X元,原价268元.列算式 数的整除小学六年级的竞赛题 一件衣服原价45元,现价36元,这件衣服打几折 x的平方-x-1=0 求 x的立方-2x的平方+3的值 在50%后面去掉百分号,这个数就()A扩大100倍 B缩小100倍 C大小不变 谁能给我六年级最难的应用题要很难很难的~ x的平方+x+1=0,求x的立方+2x的平方+3的值 把17.5%的百分号去掉,这个数就扩大到原来的100倍是对的吗 六年级较难应用题甲乙丙三人共有人民币168元,第一次甲拿出与乙相同的钱是给乙,第二次乙拿出与丙相同的钱是给丙,第三次丙拿出与甲相同的钱给甲,这样三人钱数相等,原来甲比乙多多少元? 已知x的平方+x+1=0,则x的立方+2x的平方+2x+3的值是 把15%的百分号去掉,这个数就扩大100倍这道题是对还是错.错的并说明理由. 若-(n+2)x的n次方y的平方z是一个5次单项式,则n=____,这个单项式 的系数是______. 把百分号去掉,是缩小了还是扩大了 把3.8%的百分号去掉,这个数比原数( )A扩大2倍 B扩大6倍 C扩大100倍 D大小不变怎么解 写出一个奇数和偶数使它们的最大公因数大于1 求服装制版基础计算公式我刚学的,想求原型板的如:袖窿深、肩宽、袖肥、上围(袖窿深)、背长(腰节)、领围…等等的公式. 15.5 %去掉百分号,这个数就是A扩大100倍B缩小100倍C扩10大倍 写出一个奇数和一个偶数,使它们的最大公因数是1,2和3对吗? 服装T恤单耗计算公式丝光棉面料的我想把 我计算单耗的方式向您请教下.175码的后中长为73厘米,胸围为55厘米,袖长(短袖)24厘米,1/2袖口17.5厘米,夹围(袖笼)为23.6.门幅为130,克重为155克/平 如果x的平方加x=1 求x的立方+2x平方+2006的值 一件衣服打八折这件衣服现价比原价便宜了168元,这件衣服实际买成多少元?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn