コード例 #1
0
ファイル: I2cDriver2Form.cs プロジェクト: KlausAtZ/I2cDriver2
        private void ReadAndLog(byte bRxCnt)
        {
            bool Ack = I2c.ReadBytes(Convert.ToByte(tbxAddr.Text, 16),
                                     bRxCnt);
            string Log = "";

            if (Ack == false)
            {
                uiNAKCnt = Convert.ToUInt16(tbxNAKCnt.Text);
                uiNAKCnt++;
                tbxNAKCnt.Text = Convert.ToString(uiNAKCnt);
            }
            else
            {
                FillRxBox(bRxCnt);
                if (I2c.LogOn == true)
                {
                    I2c.fs = new FileStream("I2cDriver2.log", FileMode.Append);
                    I2c.sw = new StreamWriter(I2c.fs);
                    Log    = "Rd: " + tbxI2cRx.Text + " ";
                    if (Ack == true)
                    {
                        Log += "ACK";
                    }
                    else
                    {
                        Log += "NACK";
                    }
                    I2c.sw.WriteLine(Log);
                    I2c.LogCounter++;
                    I2c.sw.Close();
                    I2c.fs.Close();
                }
            }
        }
コード例 #2
0
//--------------Eeprom Read ---------------------------------------------------

        public static bool Read()
        {
            bool Ack;
            byte CurrentDevAddr = DeviceAddr;

            // convert Addr to string "ll hh"
            byte   AddrLow  = (byte)Addr;
            byte   AddrHigh = (byte)(Addr >> 8);
            string MemAddr  = "";
            string Log      = "";

            if (TwoByteAddr == true)
            {
                MemAddr += " " + Convert.ToString((AddrHigh & 0xf0) >> 4, 16);
                MemAddr += Convert.ToString((AddrHigh & 0x0f), 16) + " ";
                MemAddr += Convert.ToString((AddrLow & 0xf0) >> 4, 16);
                MemAddr += Convert.ToString(AddrLow & 0x0f, 16);
            }
            else
            {
                MemAddr        += Convert.ToString((AddrLow & 0xf0) >> 4, 16);
                MemAddr        += Convert.ToString(AddrLow & 0x0f, 16);
                CurrentDevAddr |= (byte)(AddrHigh << 1);
            }

            // Set address
            Ack = I2c.WriteBytes(CurrentDevAddr, MemAddr);

            if (Ack == false)
            {
                MemRdRunning = false;
                I2c.StopCond();
                return(false);
            }
            else
            {   // Read page, no I2c.StopCond() -> repeated Start
                Ack = I2c.ReadBytes(CurrentDevAddr, PageSize);
                if (Ack == false)
                {
                    MemRdRunning = false;
                }
                else
                {
                    if (I2c.LogOn == true)
                    {
                        I2c.fs = new FileStream("I2cDriver2.log", FileMode.Append);
                        I2c.sw = new StreamWriter(I2c.fs);
                        Log    = "Rd: " + Convert.ToString(PageSize) + " bytes ";
                        if (Ack == true)
                        {
                            Log += "ACK";
                        }
                        else
                        {
                            Log += "NACK";
                        }
                        I2c.sw.WriteLine(Log);
                        I2c.LogCounter++;
                        I2c.sw.Close();
                        I2c.fs.Close();
                    }
                }
                I2c.StopCond();
            }

            Addr += PageSize;

            // fill file buffer
            int i;

            for (i = 0; i < PageSize; i++)
            {
                FileBuffer[FileBufferIndex] = I2c.bRdBuffer[i];
                FileBufferIndex++;
            }

            // check if finish
            if (Addr > EndAddr)
            {
                MemRdRunning = false;
                FileStream   fs = new FileStream(FileName, FileMode.Create);
                BinaryWriter bw = new BinaryWriter(fs);

                for (i = 0; i < Length; i++)
                {
                    bw.Write(FileBuffer[i]);
                }

                bw.Close();
                fs.Close();
            }
            return(Ack);
        }