色狼 发表于 2013-12-20 22:02:45

请教大家这个C程序怎么改成Delphi7版的呢?

这个是通过连接WIFI控制 视频小车的,建立tcp连接到192.168.1.1,端口2001.通过socket来发送
上位机--》路由器--》单片机--》驱动马达


这个程序是别人的,是人家开源的,请问用Delphi 7 怎么写呢,?
在Delphi 7 中 只需要 Internet 中的一个TcpClient 控件吗?还需要其他的什么东西吗?
我学Delphi 7 主要是来搞这个上位机的,实现的功能较少,呵呵,才学快一个月,还有很多东西不懂,
给点稍微详细点的思路或 给个框架 我自己来完善 可以把,呵呵呵,谢谢大家

这里不能上传图片,请下载源程序,内有源码,谢谢
程序下载: http://pan.baidu.com/s/1c0nBZiw




Config.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WifiVideo
{
    public partial class Config : Form
    {
      public Config()
      {
            InitializeComponent();
      }
      public string FileName;
      
      private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
      
      private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);

      private void Config_Load(object sender, EventArgs e)
      {
            GetIni();
      }

      private void button1_Click(object sender, EventArgs e)
      {
            WriteIni("VideoUrl","videourl",this.textBoxVideo.Text);
            WriteIni("ControlUrl", "controlUrl", this.textControlURL.Text);
            WriteIni("ControlPort", "controlPort", this.textBoxControlPort.Text);
            WriteIni("ControlCommand", "CMD_Forward", this.txtForward.Text);
            WriteIni("ControlCommand", "CMD_Backward", this.txtBackward.Text);
            WriteIni("ControlCommand", "CMD_TurnLeft", this.txtLeft.Text);
            WriteIni("ControlCommand", "CMD_TurnRight", this.txtRight.Text);
            WriteIni("ControlCommand", "CMD_Stop", this.txtStop.Text);
            WriteIni("ControlCommand", "CMD_EngineUp", this.txtEngineUp.Text);
            WriteIni("ControlCommand", "CMD_EngineDown", this.txtEngineDown.Text);

            MessageBox.Show("配置成功!请重启程序以使配置生效。", "配置信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
      }
      
      public void WriteIni(string Section, string Ident, string Value)
      {
            if (!WritePrivateProfileString(Section, Ident, Value, FileName))
            {

                throw (new ApplicationException("写入配置文件出错"));
            }
         
      }
      
      public string ReadIni(string Section, string Ident, string Default)
      {
            Byte[] Buffer = new Byte;
            int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
            
            string s = Encoding.GetEncoding(0).GetString(Buffer);
            s = s.Substring(0, bufLen);
            return s.Trim();
      }
      private void GetIni()
      {
            FileName = Application.StartupPath + "";
            this.textBoxVideo.Text = ReadIni("VideoUrl", "videourl", "");
            this.textControlURL.Text = ReadIni("ControlUrl", "controlUrl", "");
            this.textBoxControlPort.Text = ReadIni("ControlPort", "controlPort", "");
            this.txtForward.Text = ReadIni("ControlCommand", "CMD_Forward", "");
            this.txtBackward.Text = ReadIni("ControlCommand", "CMD_Backward", "");
            this.txtLeft.Text = ReadIni("ControlCommand", "CMD_TurnLeft", "");
            this.txtRight.Text = ReadIni("ControlCommand", "CMD_TurnRight", "");
            this.txtStop.Text = ReadIni("ControlCommand", "CMD_Stop", "");
            this.txtEngineUp.Text = ReadIni("ControlCommand", "CMD_EngineUp", "");
            this.txtEngineDown.Text = ReadIni("ControlCommand", "CMD_EngineDown", "");
      }
      private void button2_Click(object sender, EventArgs e)
      {
            this.Close();
      }

    }
}

2、

Form1.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using Microsoft.Win32;
using System.Runtime.InteropServices;

namespace WifiVideo
{
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }
      
      
      private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
      
      private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
      static string FileName = Application.StartupPath + "";
      public string ReadIni(string Section, string Ident, string Default)
      {
            Byte[] Buffer = new Byte;
            int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
            string s = Encoding.GetEncoding(0).GetString(Buffer);
            s = s.Substring(0, bufLen);
            return s.Trim();
      }

         string CameraIp = "";
         string ControlIp = "192.168.1.1";
         string Port = "81";
         string CMD_Forward = "", CMD_Backward = "", CMD_TurnLeft = "", CMD_TurnRight = "", CMD_Stop = "", CMD_EngineUp="",CMD_EngineDown="";


      private void button1_Click(object sender, EventArgs e)
      {
                timer1.Enabled = true;
      }

      private void timer1_Tick(object sender, EventArgs e)
      {
            pictureBox1.ImageLocation = CameraIp;// "http://192.168.1.1:8080/?action=snapshot";
      }
   
      void SendData(string data)
      {
            try
            {
                IPAddress ips = IPAddress.Parse(ControlIp.ToString());//("192.168.2.1");
                IPEndPoint ipe = new IPEndPoint(ips, Convert.ToInt32(Port.ToString()));
                Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket

                c.Connect(ipe);//连接到服务器

                byte[] bs = Encoding.ASCII.GetBytes(data);
                c.Send(bs, bs.Length, 0);//发送测试信息
                c.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
      }

      private void button2_Click(object sender, EventArgs e)
      {
            SendData(CMD_Forward);
      }

      private void button5_Click(object sender, EventArgs e)
      {
            SendData(CMD_Backward);
      }

      private void button3_Click(object sender, EventArgs e)
      {
            SendData(CMD_TurnLeft);
      }

      private void button4_Click(object sender, EventArgs e)
      {
            SendData(CMD_TurnRight);
      }

      private void button6_Click(object sender, EventArgs e)
      {
            Config cfg = new Config();
            cfg.ShowDialog();
      }

      private void Form1_Load(object sender, EventArgs e)
      {
            GetIni();
            buttonForward.BackColor = Color.LightBlue;
            buttonBackward.BackColor = Color.LightBlue;
            buttonLeft.BackColor = Color.LightBlue;
            buttonRight.BackColor = Color.LightBlue;
            buttonStop.BackColor = Color.LightBlue;
            btnEngineUp.BackColor = Color.LightBlue;
            btnEngineDown.BackColor = Color.LightBlue;
      }
      private void GetIni()
      {
            CameraIp = ReadIni("VideoUrl", "videoUrl", "");
            ControlIp = ReadIni("ControlUrl", "controlUrl", "");
            Port = ReadIni("ControlPort", "controlPort", "");
            CMD_Forward = ReadIni("ControlCommand", "CMD_Forward", "");
            CMD_Backward = ReadIni("ControlCommand", "CMD_Backward", "");
            CMD_TurnLeft = ReadIni("ControlCommand", "CMD_TurnLeft", "");
            CMD_TurnRight = ReadIni("ControlCommand", "CMD_TurnRight", "");
            CMD_Stop = ReadIni("ControlCommand", "CMD_Stop", "");
            CMD_EngineUp = ReadIni("ControlCommand", "CMD_EngineUp", "");
            CMD_EngineDown = ReadIni("ControlCommand", "CMD_EngineDown", "");
      }
      private void Form1_KeyDown(object sender, KeyEventArgs e)
      {

            if (e.KeyCode == Keys.W)
            {
                buttonForward.BackColor = Color.DarkGray;
                buttonForward.PerformClick();
            
            }
            else if (e.KeyCode == Keys.S)
            {
                buttonBackward.BackColor = Color.DarkGray;
                buttonBackward.PerformClick();
            
            }
            else if (e.KeyCode == Keys.A)
            {
                buttonLeft.BackColor = Color.DarkGray;
                buttonLeft.PerformClick();
            
            }
            else if (e.KeyCode == Keys.D)
            {
                buttonRight.BackColor = Color.DarkGray;
                buttonRight.PerformClick();
            
            }
            else if (e.KeyCode == Keys.X)
            {
                buttonStop.BackColor = Color.DarkGray;
                buttonStop.PerformClick();
            
            }
            else if (e.KeyCode == Keys.I)
            {
                btnEngineUp.BackColor = Color.DarkGray;
                btnEngineUp.PerformClick();

            }
            else if (e.KeyCode == Keys.K)
            {
                btnEngineDown.BackColor = Color.DarkGray;
                btnEngineDown.PerformClick();

            }
      }

      private void Form1_KeyUp(object sender, KeyEventArgs e)
      {
            buttonStop.PerformClick();
            buttonForward.BackColor = Color.LightBlue;
            buttonBackward.BackColor = Color.LightBlue;
            buttonLeft.BackColor = Color.LightBlue;
            buttonRight.BackColor = Color.LightBlue;
            btnEngineUp.BackColor = Color.LightBlue;
            btnEngineDown.BackColor = Color.LightBlue;
      }

      private void btnEngineUp_Click(object sender, EventArgs e)
      {
            SendData(CMD_EngineUp);
      }

      private void btnEngineDown_Click(object sender, EventArgs e)
      {
            SendData(CMD_EngineDown);
      }

      private void buttonStop_Click(object sender, EventArgs e)
      {
            SendData(CMD_Stop);
      }

    }
}

3、Config.ini文件结构:


videourl=http://192.168.1.1:8080/?action=snapshot

controlUrl=192.168.1.1

controlPort=2001

CMD_Forward=3
CMD_Backward=1
CMD_TurnLeft=2
CMD_TurnRight=4
CMD_Stop=0
CMD_EngineUp=5
CMD_EngineDown=6

艹樱散丿小羽 发表于 2013-12-21 00:58:49

额,完全 看不懂了!!!新手路过 !:sweat:

∮清云∮ 发表于 2013-12-26 12:53:48

路过看不懂

hate茶叶蛋 发表于 2013-12-26 13:16:55

路过。。。。。:lol::lol::lol:
页: [1]
查看完整版本: 请教大家这个C程序怎么改成Delphi7版的呢?