zzrs 发表于 2012-1-2 15:31:27

用计算机控制开盘机详解

本帖最后由 zzrs 于 2012-1-2 15:58 编辑

   STUDER的模拟磁带录音机REVOX C270、STUDER A807、STUDER A810、STUDER A816、STUDER A820-2CH 均配置有符合计算机数据通信RS232协议的串行接口,用于使用通用计算机对录音机进行远程控制。此后,通过计算机软件和数据通信接口,人们实现了远程控制录、放音,定时进行录、放音以及按预定的播放列表快速定位播放的愿望。这在当时也是一项计算机控制应用的高级技术。
    由于,时间的久远和技术的不断发展,这些技术及应用也渐渐人们遗忘。好在现在有一批音响发烧友,特别是本论坛的开友位,还依然钟情和沉醉在开盘机的天地之中,所以回顾一下老技术,探讨一下在新的技术条件下如何实现,想来也是乐在其中。因此,我将分几次介绍相关技术背景,同时提供一些软件实现案例,供大家参考,欢迎大家参与其中。
主要内容:
1、录音机控制接口
2、RS232通讯接口
3、录音机与计算机的硬件连接
4、录音机与计算机的软件连接
5、控制软件编写实例
6、扩展探讨

注:由于本人只有REVOX C270录音机,因此所示电路均以此机为准。

(待续)


zzrs 发表于 2012-1-4 17:21:44

第六部分 扩展探讨

    实现使用计算机以STUDER录音机的基本控制后,你是否又有新的想法,我想会有的,因为玩开盘机的朋友都有一颗不断探索的心。好吧,让我们一起继续扩展一下我们的想象空间,看看还能干些什么!

    ——可以增加一个播放列表,像微软的Media Player或苹果的iTunes一样,在播放列表中点击一首曲子,录音机就会找到播放位置开始为你歌唱;
    ——可以设置定时录音、定时放音。尽管定时录音好像已经很过时了。
    ——通过网络来控制录音机操作。实用性不一定强,实现起来还是会用到新技术的,如WEB技术、WCF—DataSvervice等。

    我就能想这些了,更多的想法还是大家提吧,我愿和大家一起来研究和实现。

    由于权限问题,我尚无法上传代码及程序,请见谅!

都市无聊 发表于 2012-1-2 16:26:22

等待中{:4_199:}{:4_199:}{:4_226:}

zzrs 发表于 2012-1-2 16:41:56

第一部分 录音机控制接口

    1、接口定义:
    STUDER模拟录音机提供一个7孔的插座用于连接其它数据通信设备,如下图红框:


接口各针定义如下:

4针是数据接收端子,3针主数据发送端子,2针为数据信号地端子。6、7针系为手动控制设备供电的端子,此端子功能不是标准RS232定义的端子,应用须注意。

      2、通信协议
      这个接口符RS232C通信协议,提供异步全双工通信通道,波特率9600,起始位1,数据位8,停止位1,无校验,XON/XOFF握手方式。
      
      3、信息格式
      信息格式为无固定长度的ASCII码的字符串。信息字符串基本构成如下:
大写字母(操作命令)+空格+ CR(回车符)
如执行播放命令,可通过计算机的RS232接口向录音机RS232接口发送如下字符串:
“PLY ”+0Dh                注:0Dh为回车的16进制ASCII码。

   4、其它信息
   ——录音机收到可识别的命令将返回一个回车换行符作为确认;
   —— 录音机收到不可识别的命令将返回一个“?”作为提示;
   ——录音机任何时候可发送“XOFF”中断接收,或发送“XON”恢复接收;
   ——录音机接收命令错误时可能会发回信息,问题严重时可能需要向录音机发送“CX”(18h)控制符复位;
   ——由于录音机型号不同,可能接收的回应信息也不同。
   






米每秒 发表于 2012-1-2 20:38:12

这个好啊 图文并茂好资料 学习啦{:4_199:}

红灯记 发表于 2012-1-2 20:42:46

开盘机论坛需要这样的美文{:4_213:}

zzrs 发表于 2012-1-2 21:52:33

本帖最后由 zzrs 于 2012-1-2 21:53 编辑

第二部分 RS232通讯接口

      RS232 是美国电子工业协会于上世纪六十年代中期发布的数据串行通信接口标准,这套标准包括硬件定义和通信协议,主要解决不同数字设备之间的通信联络问题,它的出现规范了数字通信长期存在的标准不一,互联络困难,商业化程度不高等现象。

      RS232过去常用于:
      ——UNIX操作系统下的主机与终端的连接,如:银行主机与柜台终端等;
      ——计算机与调制解调器之间的连接,如:早期的拨号上网等;
      ——计算机与数控设备之间的连接,如:数控机床、测控系统等。

      1、端子定义
       RS232硬件接口有25针和9 针两种连接器,分别用于不同需求的设备。最常用的是9针连接器,在此只介绍9针连接器定义:
  1—— DCD 载波检测
 2—— RXD 接收数据
 3—— TXD 发送数据
  4—— DTR 数据终端准备好
 5—— SG 信号地
    6—— DSR 数据准备好
 7—— RTS 请求发送
 8—— CTS 允许发送
 9—— RI 振铃提示

      9针定义可用于连接调制解调器(俗称:猫),实现无程联接的所有功能。但在很多近距离场合会不用调制解调器,而用一种这被称为空调制解调器的模式,即三线模式,具体连接上只用2、3、5个端子便可实现通信。如下图:
   
      这种连接一般通信距离在15米以内。

            2、通信设置
      RS232主要设置包括:
      ——波特率。在75——19200bit/s之间;
      ——校验位。可设置奇校验、偶校验和无校验;
      ——数据们。可设置7、8、9三种;
      ——停止位。可设置1、1.5、2三种;
      ——流量控制。分硬件和软件两种,软件握手方式通过发送XON/XOFF实现。也可不使用流量控制。

       现个RS232接口之间要实现通信,必需保持相同的波特率、校验位、数据位、停止位和流量控制方式。

   STUDER模拟录音机的数字控制接口符合RS232的基本定义,可使用三线方式进行数据通信和控制。

泡泡 发表于 2012-1-3 04:20:39

好文。{:4_215:}{:4_215:}

zzrs 发表于 2012-1-3 11:30:45

本帖最后由 zzrs 于 2012-1-3 11:43 编辑

第三部分 录音机与计算机的硬件连接

      前面介绍了STUDER模拟录音机的数字控制接口和RS232数字通信接口,下面介绍一下如何实现两者的硬件连接。
      现在大部分台式计算机都有9针的串行接口,可以直接用于连接STUDER录音机的控制接口中。但有个问题,现在大部分笔记本计算机已经没有串行接口了,但不要担心,这部分的后面我会告诉大家,用USB端口也能控制STUDER模拟录音机,这将是很有意思的一件事。无论如何,我们需要准备一个9孔的D型插头线。

      
       现在我们将这条线的另一端剪下,并将它与一个7针的园型插头进行连接,前提是要有这种插头。接线方式如下:


      由于我没有7针的插头,只能采用最原始但也简单实用的方法来连接,不多说,看图便知。


      这不正规的接法,你一定要注意安全,否则......,{:4_234:}

      好了,现在说一说没能串口的笔记本计算机如何办的问题。想用新设备、新接口连接旧设备、老接口的是大有人在(你上网一查便知),所以有人已经替我们想好了解决办法,买一个USB—RS232转换器就可以了,有的是与线做在一起的,用起来很方便是,将这种线插入我笔记本计算机的USB口,运行随线带的驱动程序进行安装,然后你可在计算机的设备管理中发现在,在端口项中有了USB—to —Serial Comm Port(COM1)的设备,这种示可能因不同品牌而有所不同。


    至此,你的笔记本计算机也有了串行接口,按上述方法就可边接到STUDR模拟录音机了。
   


zzrs 发表于 2012-1-4 10:49:57

第四部分 录音机与计算机的软件连接

    到目前为止,我们已经做好了硬件连接的准备,在这个基础上,我们来谈一谈如何进行软件连接,实现具体的功能问题。一般来讲,控制软件有通用软件和专用软件两种。
   ——通用软件如Windows操作系统的“超级终端”等,这类软件需要操作者熟知被控设备的指令系统,具体控制时需人工输入单条控制指令,特点是控制灵活。(看起来好像很专业{:4_198:})。 遗憾的是Windows 7操作系统已经不提供“超级终端”功能,不过可在网上找到类似功能的软件。
    ——专用软件是根据被控设备的指令系统,编制一套程序,按要实现的功能为操作者提供单一操作,用户只要在软件中点击按钮就可实行一系列功能。特点是操作简便,功能固定,不够灵活。(看起来像傻瓜机{:4_233:})
   
    计算机与STUDR录音机之间的大体按如下过程进行工作:
    —— 录音机初始化通信端口。一般设备上电自检后便会完成端口初始化;
    —— 计算机控制软件初始化通信端口。在软件中设置各种通信参数,并确保与录音机通信参数一致;
    —— 计算机打开通信端口,建立通信通道;
    —— 计算机软件向录音机发送控制指令;
    —— 录音机对收到的指令进行解析,执行相关操作。有的操作会向计算机回传响应信息;
    —— 计算机打关闭通信端口,断开软件连接。

    STUDR录音机的指令系统请参阅STUDR公司的《STUDER RS232 ASCII Protocol》

    实例一:
    实现通过放音头播放的功能。
    第一步,发送选择放音头还音的控制字符串:“"REP F”+空格+回车
    第二步,发送播放功能的控制字符串:“PLY”+空格+回车

    实例二:
    实现停止功能。
    发送停止的控制字符串:“STP”+空格+回车

    注意:在连续发送控制字符串实现组合功能时,应在控制字符串之间应保持100ms的间隔。

    专门用于控制STUDER录音机的计算机软件有没有,我不知道,但在接下来的时间里,我会告诉你如何通过编程拥有自已的专用控制软件。如果你还不了解计算机软件编程,也没有关系,你可以略过下面的内容,在本文的最后我会贴出一个实现了基本控制功能的软件,供你使用。

      先上个操作界面:

都市无聊 发表于 2012-1-4 10:58:22

{:4_213:}{:4_213:}{:4_213:}好文才,期待后续

木又 发表于 2012-1-4 11:17:48

zzrs 发表于 2012-1-4 10:49 static/image/common/back.gif
第四部分 录音机与计算机的软件连接

    到目前为止,我们已经做好了硬件连接的准备,在这个基础上,我 ...

好文章,对开盘机又有一种玩法{:4_213:}

zzrs 发表于 2012-1-4 17:00:37

第五部分 控制软件编写实例

    在这一部分我将给大家介绍STUDER录音机控制软件的编写实例。编写控制软件使用哪种计算机编程语言都可以,关键是你熟悉哪个语言、熟悉哪个语言的RS232串行端口编程方法。
    1、开发环境
    编译软件:Microsoft Visual Studio 2010
    基础框架:Microsoft .NetFramework 4.0
    程序框架:Microsoft WPF
    编程语言:C#
    2、实例功能
    ——播放功能
    ——停止功能
    ——快速前进功能
    ——快速倒退功能
    ——录音功能
    ——复位功能
    ——定位功能
    3、实例代码
    ——在Visual Studio 2010中新建一个工程文件。
    ——在工程文件中的窗体代码文件中添加IO端口的引用。
      using System.IO.Ports;
    ——在窗体代码文件的程序类中定义一个SerialPort类型的静态变量。
static SerialPort _serialPort;
    ——双击窗体增加窗体装入事件处理方法
      private void Window_Loaded(object sender, RoutedEventArgs e)
      {
         }
       在窗体装入事件处理方法中写入端口初始化的代码。
       private void Window_Loaded(object sender, RoutedEventArgs e)
      {
            //创建一个新的串口对象实例
            _serialPort = new SerialPort();
            //枚举计算机中的串口
            string[] ports = SerialPort.GetPortNames();
            //如果系统没有串口装置则退出
            if (ports == null)
            {
                this.close();
            }
            try
            {
                //使用系统的第一个串行端口
                _serialPort.PortName = ports;
                //设置为9600的速率
                _serialPort.BaudRate = 9600;
                //设置为无校验
                _serialPort.Parity = Parity.None;
               
                //设置为8位数据
                _serialPort.DataBits = 8;
                //设置停止位为1
                _serialPort.StopBits = StopBits.One;
                //设置为无握手
                _serialPort.Handshake = Handshake.None;
                //设置读/写超时值
                _serialPort.ReadTimeout = 500;
                _serialPort.WriteTimeout = 500;
                //打开串行端口
                _serialPort.Open();
            }
            catch (Exception ex)
            {
                Message.show(ex.Message);
            }
      }
    ——从工具箱中向窗口添加相关按钮,命名按钮及提示内容。
      按键命名          提示内容
      button_PLY      播放
      button_STP      停止
      button_FWD      快进
      button_RWD      快倒
      button_RCE      播放
      button_RTM      清零
      button_ZLO      定位到零
    ——双击按钮图标增加按钮处理方法(以录音为例)
      private void button_PLY_Click(object sender, RoutedEventArgs e)
      {
            try
            {
                //发送从输入信号直接输出方式控制字符串
                _serialPort.WriteLine("INP F ");
               
                //休止100ms
                Thread.Sleep(100);
                //发送所有通道Ready的控制字符串
                _serialPort.WriteLine("REA F ");               
                Thread.Sleep(100);
                //发送开始录音的控制字符串。
                _serialPort.WriteLine("REC ");
            }
            catch (Exception ex)
            {
                Message.show(ex.Message);
            }
      }
    注:发送REC指令后录音机就开始起动录音,不需像手动录音时需同时按送录音和播放键才能录音。
    按以上方法增加相应按键的处理方法,并发送对应的指令即可。
    播放控制字符串:PLY+空格+回车
    停止控制字符串:STP+空格+回车
    快进控制字符串:FWD+空格+回车
    快倒控制字符串:RWD+空格+回车
    复位控制字符串:RTM+空格+回车
    定位到零字符串:LZA+空格+回车

    写好这此代码后,接好连线,编译运行就可以控制你的录音机了,就这么简单,你不觉得吗?!{:4_240:}

    有了这个基础,你就可以根据STUDER控制指令集实现更多的控制功能了。

木又 发表于 2012-1-4 17:50:03

zzrs 发表于 2012-1-4 10:49 static/image/common/back.gif
第四部分 录音机与计算机的软件连接

    到目前为止,我们已经做好了硬件连接的准备,在这个基础上,我 ...

楼主:可否发个软件试试{:4_226:}

zox 发表于 2012-1-4 18:36:19

如果和电脑多轨录音软件同步,会比较有用,或者和视频软件同步.
一般会有卖专门的同步器,很贵,主要是各个设备之间联系和同步用,多轨录音和影视后期都必须使用的。

zzrs 发表于 2012-1-5 08:49:11

不好意思,我上传不了。待有权限时一定满足。
页: [1] 2
查看完整版本: 用计算机控制开盘机详解