- Samsung Galaxy A54 - türelemjáték
- Milyen okostelefont vegyek?
- Xiaomi 13 - felnőni nehéz
- Xiaomi 15 Ultra - kamera, telefon
- Mobil flották
- iPhone topik
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Erős specifikáció, kompakt formában
- Galaxy Z Fold6-hoz viszonyítva mutatják, mennyivel lesz vékonyabb a Z Fold7
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
Új hozzászólás Aktív témák
-
G.A.
aktív tag
Üdv!
Egy saját class-t szerettem volna létrehozni:
public class Avr_Registers
{
public string Name
{ get; set; }
public byte Value
{ get; set; }
public string[] Bit_Names
{ get; set; }
}
amivel már a teszt foo()-ban gondo akadt:public void AVR_Register_Test()
{
Avr_Registers[] AVR_Regz =
new Avr_Registers[256];
for (UInt64 i = 0; i < 0x08; i++)
{
AVR_Regz[i].Name = "Reg" + i.ToString(); << már itt hibát ir ki
AVR_Regz[i].Value = (byte)i;
for (byte b = 0; b < 8; b++)
{
AVR_Regz[i].Bit_Names[b] = "Bit" + i.ToString() + b.ToString();
}
write_to_uart_screen(AVR_Regz[i].Name + " value = " + AVR_Regz[i].Value.ToString() + "\r\n");
for (byte y = 0; y < 8; y++)
{
write_to_uart_screen(AVR_Regz[i].Bit_Names[y] + "\r\n");
}
}
}
A hiba:
"System.NullReferenceException: 'Az objektumhivatkozás nincs beállítva semmilyen objektumpéldányra.' "
Nem tudok a változóimnak (új) értéket adni.
A legidegtépőbb számomra, hogy akármilyen módon próbálom megoldani nem megy, pedig vagy egy tucat "referencia" kódot találtam a neten, amik leginkább erre a félépítésre hajaznak:
[link]A vicc, hogy van egy másik, egy array-változós class-om, ami meg simán megy, ahogy azt elképzeltem.
-
G.A.
aktív tag
válasz
bandi0000 #9110 üzenetére
Majdnem eltaláltad, csak fordítva.
Ha CheckedListBox_SelectedValueChanged() hívom meg, akkor utána NumUpDown_ValueChanged() is meg lesz hívva. Ez lehet a hiba forrása?
Talán egy if()-el megoldom, hogy akkor ne fusson le, ha a CheckedListBox_SelectedValueChanged() hívta a fv-t. Tesztelem is... -
G.A.
aktív tag
Üdv!
Egy NumUpDown számlálót (0-255) és egy 8 paraméterrel rendelkező CheckedListBox "értékeit" szeretném szinkronban megjeleníteni. Azaz ha egyiket módosítom, akkor a másik is változzon.
Ehhez Evenet interruptokat használok.
Ha a felhasználó a NumUpDown-t változtatja, akkor annak az Event interruptja megváltoztatja a CheckedListBox "értékeit".
A másiknál vica-versa, de itt már problémás a dolog. Néha megy, néha nem.private void NumUpDown_ValueChanged(object sender, EventArgs e)
{
byte temp = (byte)NumUpDown.Value;
for (int i = 0; i < CheckedListBox.Items.Count; i++)
{
CheckedListBox.SetItemChecked(i,IsBitSet(temp,i));
}
CheckedListBox.Refresh();
}
private void CheckedListBox_SelectedValueChanged(object sender, EventArgs e)
{
byte temp = 0;
for (int i = 0; i < CheckedListBox.Items.Count; i++)
{
if (CheckedListBox.GetItemChecked(i))
{
temp += (byte)Math.Pow(2, (i % 8));
}
}
NumUpDown.Value = (decimal)temp;
NumUpDown.Refresh();
}
A hibát leginkább úgy tudnám jellemezni, hogy akkor jön elő, ha túl gyorsan jelölöm be (vagy ki) a mezőket CheckedListBox-ban. Merre keressem a hibát?
-
G.A.
aktív tag
Üdv!
Egy TCP alapú adatküldő/fogadó alkalmazást szeretnék készíteni, ehhez írtam egy alap programot.
Jelenleg egy hibája van, csak 1 csomagot képes elküldeni, utána nem csinál semmit. Nem ír ki hibát, nem fagy le, de csak a programból való kilépés majd újraindítás után tud csomagot küldeni. Egyet.
A program 2-3 szálon fut, ami szerintem a hiba forrása.
public partial class Form1 : Form
{
Stream tcp_stream;
public Form1()
{
InitializeComponent();
}
public void TCP_Client_Init()
{
c_src_port = Convert.ToInt32(client_src_port.Text);
c_dst_port = Convert.ToInt32(client_dst_port.Text);
client_ips = Dns.GetHostAddresses(client_ip_address.Text);
TCP_Client = new TcpClient();
try
{
TCP_Client.Connect(client_ips[0], c_dst_port);
}
catch (Exception e)
{
Close_Client();
}
if(run_client)
{
tcp_stream = TCP_Client.GetStream();
TCP_Client.Client.ReceiveTimeout = 100;
TCP_Client.Client.SendTimeout = 100;
}
}
public void Run_TCP_Client_Listen()
{
bool client_rxd_packet = false;
while(run_client)
{
try
{
client_rxd_packet = true;
tcp_stream.Read(client_BUFFER, 0,256);
string value = Encoding.ASCII.GetString(client_BUFFER);
write_to_rxd_screen(value);
client_BUFFER = null;
}
catch (Exception e) { }
if(client_rxd_packet)
{
client_rxd_packet = false;
}
}
TCP_Client.Close();
}
public void Client_Send_TCP_String(string value)
{
//tcp_stream = TCP_Client.GetStream(); // HIBA <<-- ITT
client_BUFFER = Encoding.ASCII.GetBytes(value);
try
{
tcp_stream.Write(client_BUFFER, 0, client_BUFFER.Length);
}
catch (Exception e)
{
Close_Client();
}
}
}A hiba a Client_Send_TCP_String() funkció első sorában van.
Ha kihagyom a tcp_stream = TCP_Client.GetStream(); sort akkor 1 csomagot el tud küldeni, de többet nem.
Ha beírom, akkor ez a hibaüzenet jelenik meg:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dllAdditional information: A művelet nem engedélyezett nem csatlakoztatott szoftvercsatornákon.
A Client_Send_TCP_String() akkor fut le, amikor a Send gombra kattintok (ezt kihagytam a fenti kódból).
A Run_TCP_Client_Listen() viszont egy másik szálon fut.Ha jól értelmeztem a hibakódot, akkor a gondom az, hogy a tcp_stream-et 2 szálon egy időben használnám. A tcp_stream.Read()-nél, ill. a tcp_stream.Write()-nál.
Ezt valamilyen invoke (módszer/funkció)-val lehetne megoldani? Hogyan?
-
G.A.
aktív tag
válasz
kingabo #6526 üzenetére
Köszi a tippet!
A két kliens a gond....
public static string ip_address_string = "192.168.0.11";
public static int src_port = 9800, dst_port = 8900;
IPEndPoint AVREndPoint = new IPEndPoint(IPAddress.Parse(ip_address_string), dst_port);
UdpClient client = new UdpClient(src_port);
public Form1()
{
InitializeComponent();
}
...A klienst ha így hozom létre, a változók után, de a Form1 előtt, akkor a port probléma megoldódott!
Sajnos, így a GUI-ból nem tudom módosítani a portokat.
-
G.A.
aktív tag
Üdv!
A problémám a következő:
Építettem, pontosabban építgetek, egy mikorcontrollert, amit hálózatra kötnék. Hogy az eszközt távolról is elérhessem írtam hozzá C#-ben egy GUI-s alkalmazást.A kommunikációra az UDP protokollt választottam, mivel sokkal egyszerűbb, mint a TCP.
A program külsőre így néz ki:A felső sorokban a Wireshark által kiírt csomagok láthatóak. A hálózaton a 11-es gép a vezérlő, a 8-as a PC.
Látható, hogy megy a küldés és a fogadás is, ami nem megy az a a programban a forrás port 9800-re való beállítása. Pontosabban az megy, csak ekkor a program összeomlik, a következő hibaüzenettel:
Additional information: Az összes szoftvercsatorna-cím használatának általában csak egy módja (protokoll/hálózat cím/port) engedélyezett
Tehát jelenleg arra nem vagyok képes, hogy a beérkezett és a küldendő csomag source<-> destination portjait fel tudjam cserélni.
A kód:
namespace Smart_Home
{
public partial class Form1 : Form
{
public static byte[] data = new byte[1536], TX_BUFFER = new byte[1536], RX_BUFFER = new byte[1536];
public static bool connection_status = false;
public static byte[] IP_Address = new byte[4];
public static string ip_address_string;
public Form1()
{
InitializeComponent();
}
public void write_to_screen(string value)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(write_to_screen), new object[] { value });
return;
}
screen.Text += value;
}
public void RecieveChallenge()
{
IPEndPoint AVREndPoint = new IPEndPoint(IPAddress.Parse(rx_ip_address.Text), Convert.ToInt32(rx_dst_port.Text));
UdpClient client = new UdpClient(Convert.ToInt32(rx_dst_port.Text));
while (connection_status)
{
RX_BUFFER = client.Receive(ref AVREndPoint);
write_to_screen(Encoding.ASCII.GetString(RX_BUFFER));
write_to_screen(Environment.NewLine);
}
client.Close();
}
public void connect_Click(object sender, EventArgs e)
{
if (rx_ip_address.TextLength != 0 && rx_dst_port.TextLength != 0)
{
if (!connection_status)
{
connect.Text = "Disconnect";
connection_status = true;
send.Enabled = true;
Thread recieveChallengeThread = new Thread(new ThreadStart(RecieveChallenge));
recieveChallengeThread.Start();
}
else
{
connect.Text = "Connect";
connection_status = false;
send.Enabled = false;
}
}
}
public void send_Click(object sender, EventArgs e)
{
IPEndPoint AVREndPoint = new IPEndPoint(IPAddress.Parse(tx_ip_address.Text), Convert.ToInt32(tx_dst_port.Text));
UdpClient client = new UdpClient(Convert.ToInt32(tx_src_port.Text));
TX_BUFFER = Encoding.ASCII.GetBytes(send_data.Text);
client.Send(TX_BUFFER, TX_BUFFER.Length, AVREndPoint);
client.Close();
}
}
} -
G.A.
aktív tag
válasz
sztanozs #6279 üzenetére
Üdv!
Igen a using MCP2210 az a DLL file használatához kell.
Még új vagyok a C#-ban, kérlek javíts ki ha rosszul tudom.
A class MCP2210_Function amolyan header file-ként tekintem, amibe funkciókat helyeztem.
print_MCP2210_error
print_MCP2210_settings
MCP2210_Settings
... stb.Amikor a static void Main()-ben használom az egyiket, pl.: MCP2210_Functions.print_mcp2210_setting()-et
akkor a benne lévő kód lefut, majd amint a tartalma végére ér, az összes benne lévő változót "eldob", vagy itt tévedek?Amit most tapasztaltam.
Véletlenül nem kapcsoltam be az áramkört, így futtattam a kódot, így már az első print-nél hibázott.
Ekkor az jutott eszembe, mi van, ha valahogy a többinél megszakad a kapcsolat és ezért kapok fura értékeket?Így arra gondoltam, mi lenne ha beilleszteném a print-be még ezt a sor:
bool isConnected = UsbSpi.Settings.GetConnectionStatus();és igen, ez segített... ,de miért?
-
G.A.
aktív tag
Üdv!
Egy USB-SPI átalakítóhoz (Microchip - IC: MCP2210) írnék a parancssorban lefutó alkalmazást.
Jól haladtak eddig a dolgok, de valami nem állt össze, így a kódot lényegében elölről kezdtem, majd apránként adtam hozzá a kívánt funkciókat.Már az elején találtam valamit amit nem vagyok képes felfogni, hogy mi lehet a baj?
A kód egyszerű. Csak ki kéne belőle olvasni a beállításait, majd azokat átírja és ismét kiolvassa, majd harmadszor is.
A gond, hogy elsőre jól olvassa ki, majd a második és harmadik olvasás is értelmetlen eredményeket ad.
A szépség az egészben, hogy a kiolvasást egy funkcióba (MCP2210_Functions.print_mcp2210_settings())
helyeztem el, szóval ugyanaz a kód elsőre megy, aztán meg nem...Ez egy kód hiba lenne?
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- OLED TV topic
- E-roller topik
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Azonnali fáradt gőzös kérdések órája
- Gmail
- Tőzsde és gazdaság
- Horgász topik
- További aktív témák...
- DDR5 GAMER PC: Új RYZEN 7 8700F/9700X/9800X3D +RTX 4060/5060/4070/5070 +16-64GB DDR5! GAR/SZÁMLA!
- Gamer PC - R5 5600, RTX 2070 és 16gb RAM
- PC 1060 6GB , i7-7800x , 32GB RAM
- Ryzen 9 7900X /// Bontatlan // Üzletből, számlával és Garanciával!
- Ryzen 9 7900 /// Bontatlan // Üzletből, számlával és Garanciával!
- BESZÁMÍTÁS! ASRock B550M R5 5600 16GB DDR4 512GB SSD RX 6600 XT 8GB Kolink Observatory LM RGB 600W
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- AKCIÓ! MSI Z690 i7 12700K 32GB DDR4 1TB SSD RX 6800 16GB Phanteks P600S Cooler Master 750W
- GYÁRI TÖLTŐK DELL LENOVO HP FUJITSU TOSHIBA Macbook---------- Budapest,/MPL/Foxpost
- Honor Magic 7 Pro - Fekete - Új kipróbált készülék! Karcmentes gyárilag független! 512GB Memória!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged