使用Gameboy打印机启动串行连接.Net Gadgeteer

时间:2012-04-11 20:56:32

标签: c# .net serial-port spi .net-gadgeteer

我一直致力于使用Microsofts .NET gadgeteer模块破解和与Gameboy打印机进行通信的项目。到目前为止,我正在处理硬件(参见此主题:http://www.tinyclr.com/forum/21/6665/

我已根据需要将打印机连接为SPI串行连接,现在我需要开始与打印机交换字节包以开始探索打印。

我试图将一些代码放在一起,但我失败了。我无法弄清楚如何与打印机通话。我所做的唯一进步是SPI配置,但实际的通信超出了我的理解范围。也许有人不能指出我正确的方向?

以下是我试图复制的代码:http://milesburton.com/images/e/ec/GBPrinter_Arduino_Alpha_0.01.pde

我的主要参考资料是Thermaldotnet(sparkfun打印机的lib) github.com/yukimizake/ThermalDotNet

SPI on Spider: tinyclr.com/forum/21/6621 /

和一个基本的SPI示例:* wiki.tinyclr.com / index.php?title = SPI _-_ MP3_Decoder *

如何查看字节传输以判断是否有任何实际工作?

到目前为止:

using System;
using System.Collections;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;
using Microsoft.SPOT.Presentation.Media;
using Microsoft.SPOT.Touch;
using Microsoft.SPOT.Hardware;

using Gadgeteer.Networking;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;
using Gadgeteer.Modules.GHIElectronics;

namespace printTherm
{
public partial class Program
{
    static SPI MySPI = null;
    public static void Sub()
    {

        InputPort Therm;
        Therm = new InputPort(Cpu.Pin.GPIO_Pin8, false, Port.ResistorMode.PullUp);

        SPI.Configuration MyConfig =
             new SPI.Configuration(Cpu.Pin.GPIO_Pin8,
             false, 0, 0, true, true, 1000, SPI.SPI_module.SPI1);
        MySPI = new SPI(MyConfig);



        bool exit = false;
        do
        {
            byte[] tx_data = new byte[1];
            byte[] rx_data = new byte[0];
            while (Therm.Read() == true) ;

            tx_data[0] = 0x01;
            tx_data[1] = 0x00;

            MySPI.WriteRead(tx_data, rx_data);

            while (Therm.Read() == false) ;
            byte[] tx_data2 = new byte[28];
            byte[] rx_data2 = new byte[28];
            for (int i = 0; i < 28; i++)
            {
                tx_data2[i] = 0xFF;
                rx_data2[i] = 0x00;
            }
            MySPI.WriteRead(tx_data2, rx_data2);
        } while (exit == false);


        Thread.Sleep(100);
    }

    // This method is run when the mainboard is powered up or reset.   
    void ProgramStarted()
    {

        Debug.Print("Program Started");
    }
}
}

它与上面的代码几乎完全相同,只是我将Pin更改为8(MISO)并添加了一些数组内容。我真的只是在这一点上失明了。我对这种知识匮乏感到不好,但任何一点帮助都会受到高度赞赏。

对于对此感兴趣的任何人的更多资源: 完整的音乐盾牌代码: code.tinyclr.com/project/330/fez-music-shield /

文档: msdn.microsoft.com/en-us/library/ee436313.aspx 更多文档: netmf.com/Gadgeteer/docs/GadgeteerCore/2.41.500/html/0d40434b-2a84-2f72-ca4d-b0012535ea58.htm

抱歉非超链接+提前感谢!

0 个答案:

没有答案