thảo luận Thread dành cho anh em C#, .Net

  • Người tạo chủ đề Người tạo chủ đề BaronNashor
  • Ngày bắt đầu Ngày bắt đầu
:shame: trời sinh ra cái Sort để trang trí cho vui à bác. Sort theo cái Id Category là xong mà
Trong mysql có cái thằng field function trong order by xài khá tiện còn
SELECT categoryId, name
FROM category
ORDER BY FIELD(categoryId, "2", "1", "3")
còn trong SQL Server mình search thấy phải case when lòng vòng :v
https://stackoverflow.com/questions/398468/ordering-sql-query-by-specific-field-values
còn nêu mà xài LINQ thì củ chuối hơn :nosebleed:
https://stackoverflow.com/questions/728319/linq-orderby-against-specific-values
query = (select max(id) from mytable) + 1

lấy max cột key id rồi + 1 là xong mà bác :)
hoặc lấy cái sequence cũng được
 
Xin thực tập mobile mà giờ lại làm .net :too_sad: . Các bác cho em hỏi là e nên tự chuẩn bị trước .net core 6 hay .net framework ạ
 
0
Xin thực tập mobile mà giờ lại làm .net :too_sad: . Các bác cho em hỏi là e nên tự chuẩn bị trước .net core 6 hay .net framework ạ
Cũng tùy vào project nữa. Mình vote học .net core. Vì các project mới sau này sử dụng .net core, các project cũ đang là .net framework khả năng cao cũng sẽ được upgrade lên .net core.
 
các bác có đầu sách nào đọc chuyên sâu về .net core không?
em code khoảng 2 năm parttime, 4 năm fulltime rồi mà vẫn có cảm giác gì đó mình không đạt được mức senior lắm :pudency::pudency::pudency:
 
Mấy thím cho hỏi bên nhật có chuộng .net không ạ. Em đang tính vừa làm vừa học tiếng có bằng n3 là tìm job sang nhật làm ạ
 
Đi theo hướng làm web = c# thì đi như nào v các thím?

E định học các course về frontend trên udemy: html/css/js + framework frontend,...

Rồi học tiếp về asp.net mvc. Như v có ổn ko nhỉ?
 
Mấy thím cho hỏi bên nhật có chuộng .net không ạ. Em đang tính vừa làm vừa học tiếng có bằng n3 là tìm job sang nhật làm ạ
Học tiếng anh đi thím, nhiều lựa chọn với benefit hơn nhật nhiều, nhật hay làm công nghệ cũ nên kiểu ổn định làm lâu k lo đuổi thôi, với đồng yên đang tụt sml
 
Xin thực tập mobile mà giờ lại làm .net :too_sad: . Các bác cho em hỏi là e nên tự chuẩn bị trước .net core 6 hay .net framework ạ
Kể từ .NET 6 thì không còn nhánh .NET framework hay .NET core nữa. Tên gọi bây giờ chỉ là .NET 6 thôi.

Vậy nên project .NET framworke/core sớm muộn gì cũng phải migrate .NET 6 hết.

Nếu mới đụng tới .NET, bạn nên tập trung vào .NET core 3.1/NET 6 (do không quá nhiều breaking changes giữa 2 thằng).
 
Mình có làm đoạn so sánh Barcode , của Serial comport 1 vs Serial Comport2
Xuất ra chuỗi "OK " or "NG"
Nhưng sau khi so sánh xong, thì không biết làm sao để kết thúc chuỗi so sánh đó ! Để nó refesh
Để bắt đầu chuỗi mới
. Khi có chuỗi mới từ serialport 1 hoặc serialport 2 mà nó vẫn còn bị lỗi tiếp tục so sánh 1 chuỗi trước đó !
Thanks các bác giúp đỡ


C#:
 public partial class MatchingLabel : Form
    {
    
    
        string InputData = String.Empty;
        string InputData2 = String.Empty;
        delegate void SetTexcallback(string text);
        delegate void SetTextCallback(string text);
    
        public MatchingLabel()
        {
            InitializeComponent();
            _ = new SerialPort();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
             string[] port = SerialPort.GetPortNames();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataReceived); ;
            serialPort2.DataReceived += new SerialDataReceivedEventHandler(SerialPort2_DataReceived); ;
      
            comboBox1.Items.AddRange(SerialPort.GetPortNames());
            comboBox3.Items.AddRange(SerialPort.GetPortNames());
            comboBox6.Items.AddRange(SerialPort.GetPortNames());
            string[] BaudRate = { "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200" };
            comboBox2.Items.AddRange(BaudRate);
            comboBox4.Items.AddRange(BaudRate);
            comboBox5.Items.AddRange(BaudRate);
        }
        private void Btnopen1_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {

                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                try
                {
                    serialPort1.Open();
                 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                Btnopen1.Text = "Disconnect";

            }
            else
            {
                serialPort1.Close();


                Btnopen1.Text = "Connect";
            }
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                label7.Text = "Connected";
                label7.ForeColor = Color.Green;

            }
            else if (!serialPort1.IsOpen)
            {
                label7.Text = "Disconnected";
                label7.ForeColor = Color.Red;
            }

        }
        private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            InputData = serialPort1.ReadExisting();
            if (InputData != String.Empty)

            {
                // txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
                SetText(InputData); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
            }
        }
        private void SetText(string text)
        {
            if (label11.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText); // khởi tạo 1 delegate mới gọi đến SetText
                Invoke(d, new object[] { text });
            }
            else label11.Text = text;
        }
        private void Btnopen2_Click(object sender, EventArgs e)
        {
            if (!serialPort2.IsOpen)
            {

                serialPort2.PortName = comboBox3.Text;
                serialPort2.BaudRate = Convert.ToInt32(comboBox4.Text);
                try
                {
                    serialPort2.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                Btnopen2.Text = "Disconnect";

            }
            else
            {
                serialPort2.Close();


                Btnopen2.Text = "Connect";
            }
        }
     
        private void Timer2_Tick(object sender, EventArgs e)
        {
            if (serialPort2.IsOpen)
            {
                label10.Text = "Connected";
                label10.ForeColor = Color.Green;

            }
            else if (!serialPort2.IsOpen)
            {
                label10.Text = "Disconnected";
                label10.ForeColor = Color.Red;
            }

        }

        private void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            InputData2 = serialPort2.ReadExisting();
            if (InputData2 != String.Empty)

            {
                // txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
                SetText2(InputData2); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
            }
        }
        private void SetText2(string text)
        {
            if (label13.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText2); // khởi tạo 1 delegate mới gọi đến SetText
                Invoke(d, new object[] { text });
            }
            else
            {
                label13.Text = text;
            
            }
        }
[COLOR=rgb(209, 72, 65)] if (label11.Text == label13.Text)
                {
                    label18.Text = "OK";
               



                }
                else
                {
                    label18.Text = "NG";
[/COLOR]
 
Mình có làm đoạn so sánh Barcode , của Serial comport 1 vs Serial Comport2
Xuất ra chuỗi "OK " or "NG"
Nhưng sau khi so sánh xong, thì không biết làm sao để kết thúc chuỗi so sánh đó ! Để nó refesh
Để bắt đầu chuỗi mới
. Khi có chuỗi mới từ serialport 1 hoặc serialport 2 mà nó vẫn còn bị lỗi tiếp tục so sánh 1 chuỗi trước đó !
Thanks các bác giúp đỡ


C#:
 public partial class MatchingLabel : Form
    {
   
   
        string InputData = String.Empty;
        string InputData2 = String.Empty;
        delegate void SetTexcallback(string text);
        delegate void SetTextCallback(string text);
   
        public MatchingLabel()
        {
            InitializeComponent();
            _ = new SerialPort();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
             string[] port = SerialPort.GetPortNames();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataReceived); ;
            serialPort2.DataReceived += new SerialDataReceivedEventHandler(SerialPort2_DataReceived); ;
     
            comboBox1.Items.AddRange(SerialPort.GetPortNames());
            comboBox3.Items.AddRange(SerialPort.GetPortNames());
            comboBox6.Items.AddRange(SerialPort.GetPortNames());
            string[] BaudRate = { "1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200" };
            comboBox2.Items.AddRange(BaudRate);
            comboBox4.Items.AddRange(BaudRate);
            comboBox5.Items.AddRange(BaudRate);
        }
        private void Btnopen1_Click(object sender, EventArgs e)
        {
            if (!serialPort1.IsOpen)
            {

                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                try
                {
                    serialPort1.Open();
                
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                Btnopen1.Text = "Disconnect";

            }
            else
            {
                serialPort1.Close();


                Btnopen1.Text = "Connect";
            }
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                label7.Text = "Connected";
                label7.ForeColor = Color.Green;

            }
            else if (!serialPort1.IsOpen)
            {
                label7.Text = "Disconnected";
                label7.ForeColor = Color.Red;
            }

        }
        private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            InputData = serialPort1.ReadExisting();
            if (InputData != String.Empty)

            {
                // txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
                SetText(InputData); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
            }
        }
        private void SetText(string text)
        {
            if (label11.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText); // khởi tạo 1 delegate mới gọi đến SetText
                Invoke(d, new object[] { text });
            }
            else label11.Text = text;
        }
        private void Btnopen2_Click(object sender, EventArgs e)
        {
            if (!serialPort2.IsOpen)
            {

                serialPort2.PortName = comboBox3.Text;
                serialPort2.BaudRate = Convert.ToInt32(comboBox4.Text);
                try
                {
                    serialPort2.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                Btnopen2.Text = "Disconnect";

            }
            else
            {
                serialPort2.Close();


                Btnopen2.Text = "Connect";
            }
        }
    
        private void Timer2_Tick(object sender, EventArgs e)
        {
            if (serialPort2.IsOpen)
            {
                label10.Text = "Connected";
                label10.ForeColor = Color.Green;

            }
            else if (!serialPort2.IsOpen)
            {
                label10.Text = "Disconnected";
                label10.ForeColor = Color.Red;
            }

        }

        private void SerialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            InputData2 = serialPort2.ReadExisting();
            if (InputData2 != String.Empty)

            {
                // txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads .
                SetText2(InputData2); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.
            }
        }
        private void SetText2(string text)
        {
            if (label13.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText2); // khởi tạo 1 delegate mới gọi đến SetText
                Invoke(d, new object[] { text });
            }
            else
            {
                label13.Text = text;
           
            }
        }
[COLOR=rgb(209, 72, 65)] if (label11.Text == label13.Text)
                {
                    label18.Text = "OK";
              



                }
                else
                {
                    label18.Text = "NG";
[/COLOR]
InputData1 = "";
InputData2 = "";

Sau khi so sánh xong thì clear 2 biến này đi là đc mà thím ?
 
InputData1 = "";
InputData2 = "";

Sau khi so sánh xong thì clear 2 biến này đi là đc mà thím ?
thêm vô chỗ nào vậy bác.. Mình đang tập tành tự học mò cái so sánh barcode từ 2 serial Port nên không rành :(

Bác add dùm giúp mình vô đoạn nào được không thanks bác nhiều ạ

C#:
if (label11.Text == label13.Text)
                {
                    label18.Text = "OK";
                    InputData1 = "";
                    InputData2 = "";



                }
                else
                {
                    label18.Text = "NG";
                    InputData1 = "";
                    InputData2 = "";
                }
            }

Add như vậy phải ko bác
 
Sửa lần cuối:
thêm vô chỗ nào vậy bác.. Mình đang tập tành tự học mò cái so sánh barcode từ 2 serial Port nên không rành :(

Bác add dùm giúp mình vô đoạn nào được không thanks bác nhiều ạ

C#:
if (label11.Text == label13.Text)
                {
                    label18.Text = "OK";
                    InputData1 = "";
                    InputData2 = "";



                }
                else
                {
                    label18.Text = "NG";
                    InputData1 = "";
                    InputData2 = "";
                }
            }

Add như vậy phải ko bác
uhm đúng rùi, vì bản chất code nó chạy từ trên xuống, bác học lại 1 khóa c# căn bản đi là hiểu à.
 
Mình add vậy vẫn bị
VD: SerialPort1 : 1234
SerialPort2 : 1234
Xuất ra "OK"
So sánh chuỗi mới
Mình mới nhập SerialPort1 : 12345 thôi mà nó vẫn so lưu so sánh với chuỗi SerialPort2 :1234 trước đó... Mà nó không đợi chuỗi mới từ Serial Port2 rồi mới bắt đầu so sánh
 

Thống kê chủ đề

Ngày tạo
BaronNashor,
Người trả lời cuối
vuong222211,
Trả lời
266
Lượt xem
50.917
Quay lại
Lên đầu trang